将变量传递给部分轨道3?

时间:2011-01-15 16:11:15

标签: ruby-on-rails ruby ruby-on-rails-3

我有一个这样的循环:

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

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

5 个答案:

答案 0 :(得分:236)

试试这个:

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

像这样,你将在部分内部提供一个局部变量post

答案 1 :(得分:124)

将其作为局部变量赋予部分

<%= render :partial => 'middle', :locals => { :post => post } %>

当然,rails也有渲染集合的快捷方式:

<%= render :partial => 'post', :collection => @posts %>

在这种情况下,它将使用局部变量'post'

为每个帖子调用部分帖子

您甚至可以在每个帖子之间渲染间隔模板:

<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %>

答案 2 :(得分:14)

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

您现在可以在部分

中访问帖子作为本地变量post

答案 3 :(得分:10)

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

答案 4 :(得分:0)

你可以用这个替换整个每个块:

<%= render partial: "product", collection: @posts %>

或者更短:

<%= render @posts %>

完整文档(第 3.2 节) https://guides.rubyonrails.org/action_view_overview.html