如何从Rails控制器显式声明视图?

JP *_*son 21 ruby-on-rails

我想从我的控制器显式调用一个视图.

现在我有:

def some_action
  .. do something ...
  respond_to do |format|
    format.xml
  end
end
Run Code Online (Sandbox Code Playgroud)

...然后它调用我的some_action.xml.builder视图.我该怎么称呼其他观点?response_to中有参数我错过了吗?

谢谢,

J.P

Kev*_*ske 40

您可以使用渲染执行以下操作:

respond_to do |format|
    format.html { render :template => "weblog/show" }
end
Run Code Online (Sandbox Code Playgroud)


Gab*_*mbe 14

有关可以控制渲染内容的不同方法,请参阅ActionController :: Base文档的" 渲染"部分.

您可以告诉Rails渲染特定的视图(模板),如下所示:

# Renders the template located in [TEMPLATE_ROOT]/weblog/show.r(html|xml) (in Rails, app/views/weblog/show.erb)
  render :template => "weblog/show"

# Renders the template with a local variable
  render :template => "weblog/show", :locals => {:customer => Customer.new}
Run Code Online (Sandbox Code Playgroud)


Fel*_*ger 6

或者甚至更简单,因为Rails> 3.0:

render "edit"
Run Code Online (Sandbox Code Playgroud)


小智 5

您也可以传递:action或:controller,如果这样更方便的话.

respond_to do |format|
    format.html { render :action => 'show' }
end
Run Code Online (Sandbox Code Playgroud)