2011-01-17 10 views
9

Dostaję naprawdę dziwny problem z częściowym przy próbie renderowania kolekcji, próbowałem nawet różnych podejść.Zmienna lokalna jest zawsze zerowa podczas próby renderowania częściowego

Oto mój częściowy kod (do debugowania):

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

A oto moje próby użycia:

<%= 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 %> 

W każdym z tych scenariuszy częściowego tylko wyjściami nil, jednak jeśli Wewnątrz każdej z pętli pojawia się item.inspect, szczegóły obiektu są wyświetlane zgodnie z oczekiwaniami.

Jedyną rzeczą, która może być problemem, jest to, że skojarzenie items jest skrótem mapowanym na inną klasę, więc pomyślałem, że automagi Rails 3 może przypisywać je do zmiennej, aby dopasować ją do nazwy klasy, jednak jeśli próbuję i wyprowadzam, otrzymuję "niezdefiniowany błąd zmiennej lokalnej".

Mam nadzieję, że przeoczyłem coś głupiego.

Odpowiedz

10

Wypróbowałeś już to? -

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

Aktualizacja

Oto przypuszczenie dla kolekcji:

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

byłem pewien, że miał wśród wszystkich tych odmianach Próbowałem, ale chyba nie, ponieważ wydaje się działać. Nadal wydaje się dziwne (i denerwujące), że nie mogę uzyskać kolekcji do pracy. – DEfusion

+0

Dobrze, jeśli to działa. Dodałem coś, co nadal chciałbym spróbować w odniesieniu do kolekcji. – polarblau

+6

Wow, jeśli nie dodasz części: partial => "item" i użyjesz nowego skrótu Rails 3 tylko nazwy częściowej, która nie działa, ale bycie specyficznym sprawia, że ​​działa. – DEfusion