web-dev-qa-db-ja.com

JavaScriptのRailsアプリケーションでのタグのベストプラクティスを含める

ERbテンプレートの<head>にあるjavascriptファイルを呼び出す必要があるとします。私の本能はいつものことです:

<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
</head>

私のアプリケーションのレイアウトで。もちろん、これらのjavascriptファイルは、表示されているページに必要かどうかに関係なく、アプリケーションのすべてのページに読み込まれるという問題になります。

だから、たとえば、特定のディレクトリでのみ見つかったすべてのERbテンプレートのヘッダーにjavascriptをロードする良い方法があるのだろうかと思っています。

61
btw

content_for を使用します。

たとえば、アプリケーションレイアウトに挿入する場所を指定します。

<head>
<title>Merry Christmas!</title>
<%= yield(:head) -%>
</head>

そして、ビューからそこに送信します:

<%- content_for(:head) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>
111
maurycy

ユーザーのブラウザにキャッシュできるため、すべての年のデフォルトを含めて何も問題はないと感じます。

6
JasonOng

ページの読み込みが遅くなるため、ヘッダーにjavascriptを追加しないことをお勧めします。むしろ、ページの下部にあるjsをロードする方が高速です。 http://developer.yahoo.com/performance/rules.html#js_bottom

<body>
 ....
  <%= yield(:js) -%>
</body>

そして、ビューからそこに送信します:

<%- content_for(:js) do -%>
  <%= javascript_include_tag :defaults -%>
<%- end -%>
3
Jitu

通常、レイアウトファイルには次のものがあります。

<head>
  <%= javascript_include_tag :defaults %> <!-- For example -->
  <%= @extra_head_content %>
</head>

そして、ビューで:

<% (@extra_head_content ||= "") += capture do %>
  <%= other_content %>
<% end %>

#capture のAPIドキュメントを参照してください

1
Gareth