Rails content_for覆盖而不是追加

时间:2011-09-23 03:32:49

标签: ruby-on-rails

出于性能原因,我在<head>加载了样式表和js文件。

我的网站有多个组件,每个模板都想在<% yield(:head)内部拥有自己的额外头文件。

我测试了<% content_for :head do %> ..但后来我意识到它实际上是覆盖而不是附加到特定部分。

你们用什么?

1 个答案:

答案 0 :(得分:8)

content_for默认实际附加。从文档中,如果你要做...

<% content_for :navigation do %>
  <li><%= link_to 'Home', :action => 'index' %></li>
<% end %>

<%#  Add some other content, or use a different template: %>

<% content_for :navigation do %>
  <li><%= link_to 'Login', :action => 'login' %></li>
<% end %>

如果你用过......

<ul><%= content_for :navigation %></ul>

它会输出......

<ul>
  <li><a href="/">Home</a></li>
  <li><a href="/login">Login</a></li>
</ul>

刚刚在rails 3.1.0 app上对此进行了本地测试,以确保仍然如此,并且它可以做到这一点。