2011-09-23 57 views
6

出于性能原因,我在<head>中加载我的样式表和js文件。Rails content_for覆盖而不是附加

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

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

你们用什么?

+0

看看http://stackoverflow.com/questions/7512486/ruby-on-rails-yielding-specific-views-in-a-specific-places-in-the-layout – datalost

+0

@Froyo那不是什么我在问。除非我写出多个<%的收益,但我真的想这样做 – disappearedng

回答

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> 

刚刚测试这对本地一个轨道3.1.0的应用程序,以确保这仍然是这种情况,并且它很好。

+0

这里是一个[链接](https://github.com/rails/rails/blob/master/actionpack/lib/action_view/helpers/capture_helper.rb# L139)到确认LLoyd版本的来源。 – asymmetric