2011-01-15 17 views
139

Ho un ciclo come tale:Passa una variabile in un partial, rails 3?

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

Poi nel mio mezzo parziale, come faccio ad accedere il post corrente?

+0

Ciao Elliot Sto usando questo su standard di ponteggi. Utilizzando inside index.html.erb per rendere _show.html.erb dove show partial contiene modal. ogni cosa funziona bene eccetto che quando premo show link, sta mostrando lo stesso id invece di mostrare id diversi. – learner

risposta

235

Prova questo:

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

come non avrete una variabile locale post disponibili all'interno del parziale.

+18

è necessario <%= %> non <% %> tag o non renderà il rendering – Ryan

+0

Grazie, sei ovviamente giusto. Corretto. – polarblau

+4

Ricorda che è necessario '<% = render 'middle',: post => post%>' per rails 3.1.x – Archonic

10

Sostituire <%= render middle %> con <%= render middle, :post => post %>. Quindi, nel tuo parziale middle, puoi accedere alla variabile post.

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

È ora possibile accedere posto come la variabile locale post nel parziale

124

Dallo a parziale come variabile locale

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

Naturalmente, rotaie ha anche una scorciatoia per il rendering collezioni:

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

In questo caso chiamerà il par dopo ziale per ogni post con una variabile di 'post' locale

Si può anche rendere un modello di distanziale tra ogni post:

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

Non conoscevo l'opzione: spacer_template, davvero bella. Grazie! –

+11

Si noti che l'hash dei locals non è necessario quando si utilizza Rails 3. L'hash degli argomenti viene convertito in argomenti che vengono passati al partial. – superluminary

+4

Ho ancora bisogno: hash locali per farlo funzionare .. Sto eseguendo 3.2.12 – mck

Problemi correlati