Pass a variable into a partial, rails 3?
I have a loop like such:
<% @posts.each do |post开发者_运维知识库| %>
<% render middle %>
<% end %>
Then in my middle partial, how do I access the current post?
Try this:
<% @posts.each do |post| %>
<%= render 'middle', :post => post %>
<% end %>
Like this you'll have a local variable post
available within the partial.
Give it to the partial as a local variable
<%= render :partial => 'middle', :locals => { :post => post } %>
Of course, rails also has a shortcut for rendering collections:
<%= render :partial => 'post', :collection => @posts %>
In this case it will call the partial post for every post with a local variable 'post'
You can even render a spacer template between each post:
<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %>
<% @posts.each do |post| %>
<% render middle, :post => post %>
<% end %>
You can now access post as the local variable post
in the partial
Replace <%= render middle %>
with <%= render middle, :post => post %>
. Then in your middle
partial, you can access the post
variable.
You can replace the entire each block with this:
<%= render partial: "product", collection: @posts %>
Or even shorter:
<%= render @posts %>
Full documentation (section 3.2) https://guides.rubyonrails.org/action_view_overview.html
精彩评论