我想从我的控制器显式调用一个视图。
现在我有:
def some_action
.. do something ...
respond_to do |format|
format.xml
end
end
...然后它调用我的some_action.xml.builder视图。我该怎么称呼其他观点?在respond_to中是否有参数我不见了?
谢谢,
JP
答案 0 :(得分:39)
您可以使用渲染执行以下操作:
respond_to do |format|
format.html { render :template => "weblog/show" }
end
答案 1 :(得分:14)
有关控制渲染内容的不同方法,请参阅Rendering section of the ActionController::Base documentation。
你可以让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}
答案 2 :(得分:5)
如果更方便的话,您也可以传递:action或:controller。
respond_to do |format|
format.html { render :action => 'show' }
end
答案 3 :(得分:5)
或者更简单,因为Rails > 3.0:
render "edit"
答案 4 :(得分:2)
您可以在控制器中执行此操作来修改控制器的内部lookup_context
before_filter do
lookup_context.prefixes << 'view_prefix'
end
并且在查找列表中的所有其他视图前缀后,控制器将在响应view/view_prefix/show.html
请求时尝试加载show
。默认列表通常为application
和当前控制器的名称。
class MagicController
before_filter do
lookup_context.prefixes << 'secondary'
end
def show
# ...
end
end
app.get '/magic/1`
此GET
请求将按以下顺序查找视图:
view/application/show.erb
view/magic/show.erb
view/secondary/show.erb
并使用第一个找到的视图。
答案 5 :(得分:0)