如果content_for未在更改更改时呈现,则为Rails

时间:2014-07-06 14:48:31

标签: ruby-on-rails-4 erb

我在标签中有一个带有此块的布局页面:

# application.html.erb
...
<% if content_for? :head %>
  <%= yield :head %>
<% end %>

以下是产生的块:

# index.html.erb
...
<% content_for :head do %>
  <link rel="stylesheet" type="text/css" href="//cdn.datatables.net/plug-ins/be7019ee387/integration/bootstrap/3/dataTables.bootstrap.css">
  <script type="text/javascript" language="javascript" src="//cdn.datatables.net/1.10.0/js/jquery.dataTables.min.js"></script>
  <script type="text/javascript" language="javascript" src="//cdn.datatables.net/plug-ins/be7019ee387/integration/bootstrap/3/dataTables.bootstrap.js"></script>
<% end %>

如果我直接转到索引页面,或者在索引页面上执行刷新,则会将:head块添加到布局中。但是,如果我从另一个页面重定向到索引(对于例如同一控制器中的new.html.erb或不同的控制器)而没有先渲染索引,则不会复制:head块。

我想知道为什么会这样,但我怀疑这与turbo-link有关。

赞赏任何意见。

1 个答案:

答案 0 :(得分:1)

是的,问题是Turbolinks。 Turbolinks仅取代头部的身体和头衔。其他头部元素保持完整。

如果要加载外部脚本和样式表,可以将它们放在正文上。