Передать переменную в частичное, рельсы 3? - PullRequest
139 голосов
/ 15 января 2011

У меня есть такой цикл:

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

Тогда в моем среднем фрагменте, как мне получить доступ к текущему сообщению?

Ответы [ 4 ]

236 голосов
/ 15 января 2011

Попробуйте:

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

Таким образом, у вас будет локальная переменная post, доступная в частичном.

124 голосов
/ 15 января 2011

Дайте его частному в качестве локальной переменной

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

Конечно, у rails также есть ярлык для рендеринга коллекций:

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

В этом случае он вызовет частичноеpost для каждого поста с локальной переменной 'post'

Вы можете даже создать шаблон проставки между каждым постом:

<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %>
14 голосов
/ 15 января 2011
<% @posts.each do |post| %>
  <% render middle, :post => post %>
<% end %>

Теперь вы можете получить доступ к записи как локальной переменной post в частичном

10 голосов
/ 15 января 2011

Заменить <%= render middle %> на <%= render middle, :post => post %>. Затем в вашем частичном middle вы можете получить доступ к переменной post.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...