Render partial in layout file with data
The navigation for my site is obviously stored in the application layout file. Part of that navigation is driven by the database. How to I render a partial in the layout and pass in the collection of objects for it to render?
EDIT: I think my question revolves more around how to get data into the partial, is that done form the application controller or do I have to add the data in each act开发者_运维百科ion on each controller?
If you just wish to pass one object in then you can use the object
key on render
. The passed object will be accessible as an local variable of the same name as the partial. SO if the partial is called navigation
the local variable will be navigation
.
<%= render :partial => 'foo/navigation', :object => @my_collection
In the partial:
<% for obj in navigation %>
...
<% end %>
If you wish to pass multiple objects then you can use the locals
key. The names of the local variables in your layout are then the keys of the passed hash.
<%= render :partial => 'foo/navigation', :locals => { :foo => 'Hello', :bar => 'World' }
In the partial:
<%= foo %>
<%= bar %>
精彩评论