まず、私は に精通していると言わせてくださいcontent_for
。私が探しているのはここではありません。
テンプレートと任意の数のパーシャルを使用して、たとえば読み込みたい JavaScript ファイルのリストを作成し、それらをレイアウトに渡して処理し、<head>
領域に追加できるようにしたいと考えています。ページで実際にファイルが必要な場合にのみファイルをロードしたいので、すべてをレイアウトに配置したくありません。また、これらは主にビュー固有の変更であるため、コントローラーによって処理されるようには見えません。
名前の配列を返すために使用しようとしましcontent_for
たが、うまくいかないようです。また、複数のパーシャルが独自の前提条件をリストに追加することもできません。また、テンプレート/パーシャルでヘルパー関数を使用してリストに追加し、そのリストをレイアウトで使用しようとしましたが、レイアウト コードがテンプレート コードの前に評価されるようです。
何か案は?ところで、これは JavaScript 固有のものではありません。Ruby オブジェクトをテンプレート/パーシャルからレイアウトに渡す方法が必要なだけです。
編集:リクエストごと、例。css_import
CSS をエミュレートする、私が書いた単なるヘルパーです@import
。
# In the layout
<style type="text/css">
<%- yield(:foobar).each do |foo| -%>
<%= css_import foo %>
<%- end -%>
</style>
# In the template
<%- content_for :foobar do
['layout', 'recipes', 'user']
end -%>
# The actual output from View -> Source
<style type="text/css">
</style>