Javascript,Rails视图,content_for和DRYness

Jay*_*itt 2 javascript layout ruby-on-rails dry

在Rails中,特定于页面的Javascript的常见习惯是:

(布局)

<head>
  <% yield :javascript %>
</head>
Run Code Online (Sandbox Code Playgroud)

(视图)

<% content_for :javascript do %>
  <script type="text/javascript">
    $().whatever;
  </script>
<% end %>
Run Code Online (Sandbox Code Playgroud)

我讨厌重复脚本标签.以下是一个坏主意有什么理由吗?

(布局)

<head>
  <script type="text/javascript">
    <% yield :javascript %>
  </script>
</head>
Run Code Online (Sandbox Code Playgroud)

(视图)

<% content_for :javascript do %>
    $().whatever;
<% end %>
Run Code Online (Sandbox Code Playgroud)

ben*_*ode 7

我同意这是您的用例最具体的内容.通常,当我使用<%yield:javascript%>时,它的目的是添加页面特定的库,这将限制您提出的方法.如果你想支持两者,我做了以下事情:

(布局)

<head>
  <% yield :javascript_libraries %>
  <script type="text/javascript">
    <% yield :javascript %>
  </script>
</head>
Run Code Online (Sandbox Code Playgroud)

(视图)

<% content_for :javascript do %>
    $().whatever;
<% end %>
<% content_for :javascript_library do %>
    <%= javascript_include_tag 'page-specific.js' %>
<% end %>
Run Code Online (Sandbox Code Playgroud)

当然,大多数人将javascript库放在底部以优化页面加载,因此您可以在布局中移动它.