将变量传递到局部,Rails 3?

我有一个这样的循环:

<% @posts.each do |post| %>
<% render middle %>
<% end %>

然后在我的中间部分,我如何访问当前的职位?

83827 次浏览

试试这个:

<% @posts.each do |post| %>
<%= render 'middle', :post => post %>
<% end %>

像这样,局部变量 post可用。

<%= render middle %>替换为 <%= render middle, :post => post %>。然后在 middle部分中,您可以访问 post变量。

<% @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