渲染:布局正在搜索部分而不是布局

时间:2014-11-09 19:35:45

标签: ruby-on-rails applicationcontroller

我理解这是一个坏主意,但是从我在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

1 个答案:

答案 0 :(得分:0)

render在控制器中的工作方式与在视图中的工作方式不同。在控制器中,它主要用于呈现动作模板,而在视图中,它主要用于呈现部分模板。如果要为操作呈现特定布局,则有几个选项,但所有选项都在控制器中。

如果您希望特定控制器中的每个操作都使用该布局,您可以在该控制器中指定layout 'something'(通常在顶部附近)或ApplesController ,您可以在app/views/layouts/apples.html.erb中创建新的布局,这将自动用作ApplesController的默认布局。

如果您只希望控制器中的单个操作使用该布局,则可以在控制器操作中使用render layout: 'something',其中要呈现的操作隐含为当前操作。

来自Rails文档的链接: