私のサイトのナビゲーションは、明らかにアプリケーション レイアウト ファイルに保存されています。そのナビゲーションの一部は、データベースによって駆動されます。レイアウトでパーシャルをレンダリングし、オブジェクトのコレクションを渡してレンダリングするにはどうすればよいですか?
編集:私の質問は、データを部分的に取得する方法を中心に展開していると思いますが、それはアプリケーションコントローラーから行われますか、それとも各コントローラーの各アクションにデータを追加する必要がありますか?
私のサイトのナビゲーションは、明らかにアプリケーション レイアウト ファイルに保存されています。そのナビゲーションの一部は、データベースによって駆動されます。レイアウトでパーシャルをレンダリングし、オブジェクトのコレクションを渡してレンダリングするにはどうすればよいですか?
編集:私の質問は、データを部分的に取得する方法を中心に展開していると思いますが、それはアプリケーションコントローラーから行われますか、それとも各コントローラーの各アクションにデータを追加する必要がありますか?
オブジェクトを 1 つだけ渡したい場合は、object
キー onを使用できますrender
。渡されたオブジェクトは、パーシャルと同じ名前のローカル変数としてアクセスできます。SO パーシャルが呼び出された場合navigation
、ローカル変数は になりますnavigation
。
<%= render :partial => 'foo/navigation', :object => @my_collection
部分的に:
<% for obj in navigation %>
...
<% end %>
複数のオブジェクトを渡したい場合は、locals
キーを使用できます。レイアウト内のローカル変数の名前は、渡されたハッシュのキーになります。
<%= render :partial => 'foo/navigation', :locals => { :foo => 'Hello', :bar => 'World' }
部分的に:
<%= foo %>
<%= bar %>