2011-01-17 5 views
9

Ich bekomme ein wirklich seltsames Problem mit einem teilweise beim Versuch, eine Sammlung zu rendern, ich habe sogar verschiedene Ansätze ausprobiert.Lokale Variable immer Null beim Versuch, teilweise zu rendern

Hier ist mein Teil-Code (für Debugging):

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

Und hier sind meine Versuche, es zu benutzen:

<%= 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 jedem dieser Szenarien nur die Teil Null ausgibt, aber wenn Ich knalle eine item.inspect innerhalb meiner jede Schleife die Objektdetails werden wie erwartet angezeigt. Das einzige, was ich dachte, das könnte ein Problem sein, ist, dass die items Assoziation ist ein kurzer Name einer anderen Klasse zugeordnet, so dass ich dachte, dass Rails 3 Automagic-Ding könnte es eine Variable zuweisen, um diesen Klassennamen entsprechen, Wenn ich jedoch versuche und ausgibt, bekomme ich den 'undefined local variable error'.

Ich hoffe, ich übersehe etwas albern.

Antwort

10

Haben Sie das schon probiert? -

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

aktualisieren

Hier ist eine Vermutung für die Sammlung:

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

Ich war ziemlich sicher, dass ich unter all den Variationen hatte ich versucht, aber ich denke nicht, wie es scheint zu funktionieren. Es wirkt immer noch seltsam (und ärgerlich), dass ich die Sammlung nicht zur Arbeit bekommen kann. – DEfusion

+0

Gut, wenn es funktioniert. Ich habe etwas hinzugefügt, was ich bezüglich der Sammlung noch versuchen würde. – polarblau

+6

Wow, wenn Sie nicht den Teil: partial => 'item' enthalten und die neue Kurzbezeichnung Rails 3 nur für den Teilnamen verwenden, funktioniert es nicht, aber wenn es spezifisch ist, funktioniert es. – DEfusion