2011-01-17 8 views
9

Quando si tenta di eseguire il rendering di una raccolta, si verifica un problema davvero strano con un parziale. Ho persino provato approcci diversi.Variabile locale sempre nullo quando si tenta di eseguire il rendering parziale

Ecco il mio codice parziale (per il debug):

<pre><%= item.inspect -%></pre> 

e qui sono i miei tentativi di usarlo:

<%= render 'item', :collection => @foo.items %> 
<%= render 'item', :collection => @foo.items, :as => :item %> 

<% @foo.items.each do |item| %> 
    <%= render 'item', :locals => {:item => item} %> 
    <%= render 'item', :object => item %> 
<% end %> 

In ognuno di questi scenari parziale appena uscite pari a zero, se Inserisco uno item.inspect all'interno di ogni ciclo, i dettagli dell'oggetto vengono visualizzati come previsto.

L'unica cosa che ho pensato potesse essere un problema è che l'associazione items è un nome breve mappato a una classe diversa, quindi ho pensato che la cosa automagic di Rails 3 potesse assegnarla a una variabile per abbinarla al nome della classe, tuttavia, se provo a generare, ottengo l '"errore di variabile locale non definito".

Spero di trascurare qualcosa di sciocco.

risposta

10

Hai già provato? -

<% @foo.items.each do |item| %> 
    <%= render 'item', :item => item %> 
<% end %> 

Aggiornamento

Ecco un'ipotesi per la raccolta:

<%= render :partial => 'item', :collection => @foo.items, :as => :item %> 
+0

ero abbastanza sicuro che ho avuto fra tutte quelle varianti che ho provato ma non mi immagino come sembra funzionare. Sembra ancora strano (e fastidioso) che non riesca a far funzionare la collezione. – DEfusion

+0

Bene, buona cosa se funziona. Ho aggiunto qualcosa che proverei ancora riguardo alla collezione. – polarblau

+6

Wow se non si include la parte: partial => 'item' e si usa la nuova stenografia di Rails 3 solo del nome parziale che non funziona, ma essendo specifica lo fa funzionare. – DEfusion