Passare una variabile in un parziale, rotaie 3?


140

Ho un ciclo come questo:

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

Quindi, nel mio parziale centrale, come posso accedere al post corrente?


Ciao Elliot, lo sto usando su ponteggi standard. Utilizzando inside index.html.erb per eseguire il rendering di _show.html.erb dove show partial contiene modale. ogni cosa funziona bene tranne che quando premo show link, mostra lo stesso ID invece di mostrare ID diversi.
studente

Risposte:


237

Prova questo:

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

In questo modo avrai una variabile locale postdisponibile all'interno del parziale.


18
hai bisogno di <% =%> non <%%> tag altrimenti non verrà visualizzato
Ryan

4
Tieni presente che avresti bisogno <%= render 'middle', :post => post %>delle rotaie 3.1.x
Archonic,

124

Dallo al parziale come variabile locale

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

Naturalmente, rails ha anche un collegamento per il rendering delle raccolte:

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

In questo caso chiamerà il post parziale per ogni post con una variabile locale 'post'

Puoi persino eseguire il rendering di un modello spaziatore tra ogni post:

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

14
Non sapevo dell'opzione: spacer_template, davvero carino. Grazie!
Claudio Acciaresi,

11
Si noti che l'hash: local non è necessario quando si utilizza Rails 3. L'hash degli argomenti viene convertito in argomenti che vengono passati al parziale.
superluminario,

4
Avevo ancora bisogno: hash della gente del posto per farlo funzionare. Sto correndo 3.2.12
mck

1
<%= render :partial => 'post', :collection => @posts, as: :post %>eseguirà automaticamente il ciclo di ciascuno postnel tuo parziale, in modo da poterlo utilizzare postcome parziale.
ahnbizcad,

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

Ora puoi accedere a post come variabile locale postnel parziale


10

Sostituisci <%= render middle %>con <%= render middle, :post => post %>. Quindi, nel tuo middleparziale, puoi accedere alla postvariabile.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.