我理解这是一个坏主意,但是从我在ApplicationControllers中看到的,使用:
render :layout => "something" ...
应使用位于views/layouts/something.html.erb
但是,当我从视图内部进行此调用时,它会出错:
Missing partial my_controller_name/something with ...
Searched in:
* "{path here}/app/views"
在我看来它正在寻找一个部分,而不是我指定的布局。有谁知道这是怎么回事?
一个足够小的例子来重现它:
<%= render :layout => 'something' do %>
<div>Hello</div>
<% end %>
这完全属于Rails vs 4.0.2
答案 0 :(得分:0)
render
在控制器中的工作方式与在视图中的工作方式不同。在控制器中,它主要用于呈现动作模板,而在视图中,它主要用于呈现部分模板。如果要为操作呈现特定布局,则有几个选项,但所有选项都在控制器中。
如果您希望特定控制器中的每个操作都使用该布局,您可以在该控制器中指定layout 'something'
(通常在顶部附近)或ApplesController
,您可以在app/views/layouts/apples.html.erb
中创建新的布局,这将自动用作ApplesController
的默认布局。
如果您只希望控制器中的单个操作使用该布局,则可以在控制器操作中使用render layout: 'something'
,其中要呈现的操作隐含为当前操作。
来自Rails文档的链接: