2010-06-16 7 views
7

Mam projekt mający wiele zadań, a każde zadanie należy do osoby.Jak zastosować zasięg do powiązania przy użyciu pól_for?

w moim projekcie formularza edycji I pozwalają edytować istniejące zadania i dodawać nowe z zakładu Zagnieżdżony obiekt formularza (http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes):

<% project_form.fields_for :tasks do |task_form| %> 

chcę chętny obciążenia powiązany Osoba Zadanie obiektami, gdy fields_for żądań zadania z bazy danych, ale nie mogłem znaleźć rozwiązania. Czy to możliwe? W modelu projektu mogłem zdefiniować moje has_many: zadania z opcją: include, ale wolałbym tego uniknąć, ponieważ nie potrzebuję chętnych do ładowania obiektów Person, kiedy zajmujemy się ogólnie zadaniami projektu.

Na razie stworzyłem drugie skojarzenie has_many: tasks_including_person z odpowiednimi accepts_nested_attributes_for i używam go w moich polach dla. Działa, ale wolałbym nie tworzyć takiego powiązania.

Odpowiedz

23

Możesz przekazać drugi parametr do fields_for, który jest obiektem lub kolekcją do renderowania. Na przykład:

project_form.fields_for :tasks, project_form.object.tasks.all(:include => :person) do |task_form| 
+0

Dzięki Jason! i przepraszam za długie opóźnienie mojej odpowiedzi. To, czego potrzebowałem. "zadania (: include =>: person)" nie jest zbytnio obciążony, musiałem tylko zmienić go na "tasks.find (: all,: include =>: person)". – Florent2

+0

Ups, to było niedopatrzenie z mojej strony. Zaktualizowałem mój przykład, aby wywołać 'object.tasks.all (: include =>: person)'. –

Powiązane problemy