在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结果也更清晰。
- 就像Ruby on Rails中的按钮Ajax一样
- AJAX请求从每个页面命中服务器,我找不到原始AJAX调用的来源
- 如何在rails 5.1.3 + webpacker上的视图中使用jquery
- Ruby on Rails 4 javascript未执行
- 在FB.login调用之后,Facebook JavaScript SDK不会在chrome中设置访问令牌cookie
- Gmaps4rails:当用户点击侧边栏中的链接时,如何更改标记的外观?
- 使用Rails在视图中打印有效的,非转义的JSON
- 如何使用javascript以railsforms获取本地时间?
- Rails 4:将变量传递给javascript