我有一个这样的循环:
<% @posts.each do |post| %> <% render middle %> <% end %>
然后在我的中间部分,我如何访问当前的职位?
试试这个:
<% @posts.each do |post| %> <%= render 'middle', :post => post %> <% end %>
像这样,局部变量 post可用。
post
将 <%= render middle %>替换为 <%= render middle, :post => post %>。然后在 middle部分中,您可以访问 post变量。
<%= render middle %>
<%= render middle, :post => post %>
middle
<% @posts.each do |post| %> <% render middle, :post => post %> <% end %>
您现在可以作为局部变量 post访问 post
把它作为局部变量给局部变量
<%= render :partial => 'middle', :locals => { :post => post } %>
当然,Rails 也有呈现集合的快捷方式:
<%= render :partial => 'post', :collection => @posts %>
在这种情况下,它将调用每个具有局部变量‘ post’的 post 的部分 post
你甚至可以在每篇文章之间渲染一个间隔模板:
<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %>
您可以用以下代码替换整个 each 块:
<%= render partial: "product", collection: @posts %>
或者更短:
<%= render @posts %>
完整的文件(第3.2节) Https://guides.rubyonrails.org/action_view_overview.html