ERbテンプレートの<head>
にあるjavascriptファイルを呼び出す必要があるとします。私の本能はいつものことです:
<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
</head>
私のアプリケーションのレイアウトで。もちろん、これらのjavascriptファイルは、表示されているページに必要かどうかに関係なく、アプリケーションのすべてのページに読み込まれるという問題になります。
だから、たとえば、特定のディレクトリでのみ見つかったすべてのERbテンプレートのヘッダーにjavascriptをロードする良い方法があるのだろうかと思っています。
content_for を使用します。
たとえば、アプリケーションレイアウトに挿入する場所を指定します。
<head>
<title>Merry Christmas!</title>
<%= yield(:head) -%>
</head>
そして、ビューからそこに送信します:
<%- content_for(:head) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>
ユーザーのブラウザにキャッシュできるため、すべての年のデフォルトを含めて何も問題はないと感じます。
ページの読み込みが遅くなるため、ヘッダーにjavascriptを追加しないことをお勧めします。むしろ、ページの下部にあるjsをロードする方が高速です。 http://developer.yahoo.com/performance/rules.html#js_bottom
<body>
....
<%= yield(:js) -%>
</body>
そして、ビューからそこに送信します:
<%- content_for(:js) do -%>
<%= javascript_include_tag :defaults -%>
<%- end -%>
通常、レイアウトファイルには次のものがあります。
<head>
<%= javascript_include_tag :defaults %> <!-- For example -->
<%= @extra_head_content %>
</head>
そして、ビューで:
<% (@extra_head_content ||= "") += capture do %>
<%= other_content %>
<% end %>
#capture のAPIドキュメントを参照してください