2014-07-06 40 views
1

我有一个布局页面中的标签块:Rails的if_content_for不根据变化的变化呈现

# 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块。

我想知道为什么会发生这种情况,但我怀疑这与涡轮链接有关。

任何输入表示赞赏。

回答

1

是的,问题是Turbolinks。 Turbolinks只替换头部的身体和头衔。其他头元素保持完好。

如果您想加载外部脚本和样式表,可以将它们放在主体上。

+0

如果我将这些css和js链接复制到布局会有效吗? – Khanetor

+0

我只是编辑我的问题与该建议。它会。 –

+0

谢谢。我想索引视图经常被查看,所以不要使用content_for不好。 – Khanetor