在Rails中,特定于页面的Javascript的常见习语是:
(布局)
<head>
<% yield :javascript %>
</head>
(视图)
<% content_for :javascript do %>
<script type="text/javascript">
$().whatever;
</script>
<% end %>
我讨厌重复脚本标签。以下是一个坏主意有什么理由吗?
(布局)
<head>
<script type="text/javascript">
<% yield :javascript %>
</script>
</head>
(视图)
<% content_for :javascript do %>
$().whatever;
<% end %>
答案 0 :(得分:7)
我同意这是您的用例最具体的内容。通常,当我使用&lt;%yield:javascript%&gt;时,它的目的是添加页面特定的库,这将限制您提出的方法。如果你想同时支持两者,我已经完成了以下工作:
(布局)
<head>
<% yield :javascript_libraries %>
<script type="text/javascript">
<% yield :javascript %>
</script>
</head>
(视图)
<% content_for :javascript do %>
$().whatever;
<% end %>
<% content_for :javascript_library do %>
<%= javascript_include_tag 'page-specific.js' %>
<% end %>
当然,大多数人都会在底部放置javascript库来优化页面加载,因此您可以在布局中移动它。
答案 1 :(得分:2)
成语很棒,但最重要的是你和你的团队的生产力和维护能力,如果你对它好的话,我也没有看到任何问题。这就是说我以前做过这个并且也看过它在项目中完成,虽然现在我通常把它放在一个脚本文件中,除非我绝对必须在特定页面中使用它。
答案 2 :(得分:1)
如果你想简化你的观点,我强烈推荐HAML(它是CSS的姐妹SASS)。有一个轻微的学习曲线,你可能不想一次转换所有现有的观点,但我怀疑你会想要回到ERB的丑陋混乱。
在HAML中,这看起来像:
= content_for :head do
:javascript
$().whatever;