content_for不在部分视图中呈现

时间:2013-12-01 00:08:59

标签: ruby-on-rails actionview actionviewhelper

我有一个使用布局的rails应用

简化版本如下所示:

<html>
  <head>
    <%= render 'layouts/head' # renders the "layouts/_head.html.erb" partial correctly  
                              # the most head (css/js) content gets implemented here %>
  </head>
  <body>

    <%= yield # renders the current action %>

    <!-- implement alls scripts which should be exectued on the bottom of the page -->
    <%= content_for :scripts_bottom %>
  </body>
</html>

在我的`layouts / _head.html.erb'中我使用

 <%= content_for :scripts_head %>
 <!-- it seems `content_for` instead of `yield` appends content -->

在我的partials中,我将以下代码段附加到它们:scripts_head。 (我的部分内容应该放在javaScripts

<% content_for :scripts_head do %>
    <%= javascript_include_tag 'some_script' %>
<% end %>

`layouts / head'中的content_for不呈现任何内容

我该如何解决?

看起来partials无法在content_for :blah do放置在echoing content_for / yield标记后附加其content_for内容。

如果我尝试尝试content_for :scripts_bottom,它会在页面底部呈现。

提前致谢

Rails 3.2.14 ruby 2.0.0p247

3 个答案:

答案 0 :(得分:0)

而不是provide,请尝试<%= content_for :scripts_head %>

答案 1 :(得分:0)

如果你想使用content_for,那么你需要在头脑中而不是渲染它。

所以你的标题看起来像是:

<%= yield :scripts_head %>

或者你可以删除部分中的content_for,然后单独使用JS:

<%= javascript_include_tag 'some_script' %>

然后您不必更改布局文件。

答案 2 :(得分:0)

layouts/head部分中,使用yield :scripts_head not content_for