无法获得Ruby on Rails可以在UI层中工作

时间:2011-05-10 22:29:04

标签: ruby-on-rails ruby ruby-on-rails-3

我正在关注本教程http://guides.rubyonrails.org/layouts_and_rendering.html,并试图将标题div与其他HTML模板分开。

我从app / views / home / index.html.erb文件中删除了一个div并将其替换为

<%= yield :head %>

然后我在/ app / views / layouts目录中创建了一个名为head.html.erb的文件,并将该div放在那里。然后我把这个代码放在div:

<% content_for :head do %>
<% end %>

但它不起作用,标题div不会显示。我哪里做错了?我认为路径和目录不匹配,但我不确定如何匹配它们。

谢谢!

2 个答案:

答案 0 :(得分:3)

您的布局是放置yield调用的位置,每个视图的模板都放在content_for块的位置。您可能希望在应用程序的主布局文件中调用yield

所以在app/views/layouts/application.html.erb中把它放在你想要的地方:

<div id="my_header_div">
  <%= yield :head %>
</div>

然后在每个视图中,您可以执行此操作:

<% content_for :head do %>
  <h1>My Header!</h1>
<% end %>

它将插入布局文件中的div内部。

答案 1 :(得分:1)

你应该把这个:

<%= yield :head %>
布局文件中的

如果您的head布局不是特定操作的布局content_for :head将永远无效