我有一个使用布局的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
答案 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