2010-06-01 7 views
13

Wszystko działa dobrze, gdy próbuję uczynić częściowy tak:Czy "locals" można używać z "kolekcji" podczas renderowania części w Rails?

= render :partial => "/shared/enquiry/car_type", :collection => @enquiry.available_car_types 

Jednakże, jeśli chcę też przekazać zmienną (w tym przypadku „ścieżki”, ponieważ dzielę to częściowe w dwóch postaciach), ścieżka nie jest dostępna do mnie:

= render :partial => "/shared/enquiry/car_type", :collection => @enquiry.available_car_types, :locals => {:path => customers_enquiry_path} 

próbowałem przenoszenia rzeczy wokół, ale nic nie wydaje się działać, prowadząc mnie do przypuszczenia, nie można korzystać z miejscowych zbiorów. Każda pomoc będzie doceniona.

Gav

+0

Czy możesz podać więcej szczegółów jak "nic nie działa"? –

Odpowiedz

-8

Nie można ich używać razem. Ref this

Myślę, że trzeba coś zrobić jak po

<% for ad in @enquiry.available_car_types %> 
    <%= render :partial => "/shared/enquiry/car_type", :locals =>{ :ad => ad, :path =>customers_enquiry_path } %> 
    <% end %> 
+1

Gdzie w odnośniku jest napisane, że nie można ich użyć razem? Zgodnie z aktualnym przewodnikiem po szynach, użycie: locals i: collection is – Urkle

+1

Jak powiedzieli inni komentatorzy, wydaje się, że jest to dozwolone, jak podano w Poradniku Rails. –

+4

Powtórzę, że można z nich korzystać jednocześnie. Używałem tego podejścia wiele razy. – raidfive

9

Co wersji używasz? Korzystanie moje 2.3.5 jestem w stanie to zrobić tylko, że:

render :partial => "/site_articles/article", :collection => @site_articles, :locals => { :footer => true } 

, które można znaleźć wyjaśnione w innych miejscach, takich jak 3.4.6 this.

1

@Gav, zostanie uruchomiony w dwóch kwestiach.

  1. render ignoruje opcję locals przechodząc kolekcję jako pierwszy parametr. Zamiast tego należy podać opcje parametrów partial i collection, tak jak w drugim przykładzie.

  2. path prawdopodobnie spadnie do królestwa zastrzeżonego słowa. Spróbuj użyć czegoś innego.

17

dla szyn 4.x, jeśli przejdą kolekcję bezpośrednio do renderowania (co należy zrobić, jeśli chcesz korzystać z automatycznego wyboru częściowego dla heterogenicznej kolekcji), następny parametr jest interpretowany jako hash mieszkańców .

Spróbuj wykonać następujące czynności:

= render @enquiry.available_car_types, :path => customers_enquiry_path 
+0

Dziękuję, proszę pana! Nie mogłem znaleźć tej informacji w dokumentach ... –

20

BTW, dla mnie, jak przewodnicy powiedział określić opcję w wywołaniu :as do częściowego

enter image description here

+1

To jest najlepsza odpowiedź, dziękuję. – Abram

+0

@ gav Czy możesz zaznaczyć tę odpowiedź jako prawidłowe rozwiązanie? – Ash

Powiązane problemy