У меня такой цикл:
<% @posts.each do |post| %>
<% render middle %>
<% end %>
Затем в моей средней части, как мне получить доступ к текущему сообщению?
У меня такой цикл:
<% @posts.each do |post| %>
<% render middle %>
<% end %>
Затем в моей средней части, как мне получить доступ к текущему сообщению?
Ответы:
Попробуй это:
<% @posts.each do |post| %>
<%= render 'middle', :post => post %>
<% end %>
Таким образом, у вас будет локальная переменная, post
доступная в партиале.
<%= render 'middle', :post => post %>
rails
Передайте его партиалу как локальную переменную
<%= render :partial => 'middle', :locals => { :post => post } %>
Конечно, в rails также есть ярлык для рендеринга коллекций:
<%= render :partial => 'post', :collection => @posts %>
В этом случае он будет вызывать частичное сообщение для каждого сообщения с локальной переменной post
Вы даже можете отобразить шаблон разделителя между каждым постом:
<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %>
<%= render :partial => 'post', :collection => @posts, as: :post %>
будет автоматически перебирать каждый post
в вашем партиале, поэтому вы можете использовать его post
в партиале в качестве переменной.
<% @posts.each do |post| %>
<% render middle, :post => post %>
<% end %>
Теперь вы можете получить доступ к записи как к локальной переменной post
в частичном
Заменить <%= render middle %>
на <%= render middle, :post => post %>
. Затем в middle
партиале вы можете получить доступ к post
переменной.