在rails中使用content_for包含内联javascript

我正在使用content_for和yeild将javascript文件注入我的布局底部,但我想知道包含内联javascript的最佳实践是什么。 具体来说我想知道把脚本类型声明放在哪里:

  ...   

要么

  ...      

我现在正在使用第一个选项,并想知道包含多个是否不好

一个视图中的声明。 有时我会有部分导致这种情况发生。

我更喜欢让布局的产量看起来像这样:

     <%= yield :javascript %>   

然后在视图中你可以写:

 <% content_for :javascript do %>  <% end %>  <%= render :partial => "sub_view_with_javascript" %> 

在部分_sub_view_with_javascript.html.erb中你也可以写:

 <% content_for :javascript do %>  <% end %> 

我对这种方法的推理是yield和content_for在不同的文件中。 将脚本标记放入每个content_for并不是DRY, 它允许语法高亮显示识别每个文件中语言的变化并帮助我。

如果你在一个文件中有多个content_for调用到同一个符号(在我们的例子中,:javascript)我会考虑将它们全部合并到顶部,但它非常适合与partials一起使用。

HTML非常乐意拥有您想要的尽可能多的脚本块。 唯一可能的问题是在使用firebug等开发人员工具中的代码时,需要花费更多的时间为您的函数找到正确的脚本块。 当我需要设置一个javascript断点进行调试时,这只会发生在我身上。

如果你真的想在你的html中保持

layout_helper.rb:

  def javascript_jquery_ready(script) content_for(:javascript_jquery_ready) { script .gsub(/( 

application.html.erb:

  

任何视图文件:

 <% javascript_jquery_ready (capture do %>  <% end) %> 

这个解决方案使我能够在我的IDE中保持代码的组织和可读性,因为我不需要为每个js代码创建部分代码。 即使它对最终用户没有任何改变,html结果也更清晰。