web-dev-qa-db-fra.com

Passer une variable dans un partiel, Rails 3?

J'ai une boucle comme celle-ci:

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

Ensuite, dans ma partie centrale, comment puis-je accéder au poste actuel?

139
Elliot

Essaye ça:

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

Comme cela, vous aurez une variable locale post disponible dans le partiel.

236
polarblau

Donne-le au partiel en tant que variable locale

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

Bien sûr, Rails a aussi un raccourci pour le rendu des collections:

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

Dans ce cas, il appelle la publication partielle pour chaque publication avec une variable locale "post"

Vous pouvez même rendre un modèle d'espacement entre chaque publication:

<%= render :partial => 'post', :collection => @posts, :spacer_template => 'post_divider' %>
124
Stefaan Colman
<% @posts.each do |post| %>
  <% render middle, :post => post %>
<% end %>

Vous pouvez maintenant accéder à post en tant que variable locale post dans la partie

14
Felix Andersen

Remplacer <%= render middle %> avec <%= render middle, :post => post %>. Ensuite, dans votre middle partial, vous pouvez accéder à la variable post.

10
sevenseacat