2010-06-16 10 views
7

मेरे पास एक परियोजना है जिसमें कई कार्य हैं, और प्रत्येक कार्य किसी व्यक्ति से संबंधित है।fields_for का उपयोग करते समय किसी एसोसिएशन को एक स्कोप कैसे लागू करें?

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

मैं उत्सुक लोड करना चाहते हैं जुड़े टास्क व्यक्ति वस्तुओं जब fields_for अनुरोध:

मेरी परियोजना संपादित रूप में, मैं मौजूदा कार्यों को संपादित करने और नेस्टेड वस्तु फार्म सुविधा (http://ryandaigle.com/articles/2009/2/1/what-s-new-in-edge-rails-nested-attributes) के साथ नए लोगों को जोड़ने की अनुमति डेटाबेस से कार्य, लेकिन मुझे कोई समाधान नहीं मिला। क्या यह संभव है? प्रोजेक्ट मॉडल में मैं अपने has_many को परिभाषित कर सकता हूं: इसमें शामिल विकल्प: विकल्प शामिल है, लेकिन मैं इसके बजाय इससे बचूंगा क्योंकि मुझे सामान्य रूप से किसी प्रोजेक्ट कार्यों से निपटने के दौरान व्यक्ति वस्तुओं को लोड करने की आवश्यकता नहीं होती है।

अभी के लिए मैंने एक दूसरा has_many एसोसिएशन बनाया है: functions_including_person संबंधित accepts_nested_attributes_for के साथ और इसे मेरे field_for में उपयोग करें। यह काम करता है लेकिन मैं इस तरह एक विशिष्ट संगठन बनाने की जरूरत नहीं है।

उत्तर

23

आप fields_for पर दूसरा पैरामीटर पास कर सकते हैं जो प्रस्तुत करने के लिए ऑब्जेक्ट या संग्रह है। उदाहरण के लिए:

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

धन्यवाद जेसन! और मेरे जवाब की लंबी देरी के लिए खेद है। मुझे जो चाहिए वह "कार्य (: शामिल =>: व्यक्ति)" लोड उत्सुक नहीं है, मुझे बस इसे "tasks.find (: all,: include =>: person) में बदलना पड़ा"। – Florent2

+0

ओह, यह मेरे हिस्से पर एक निरीक्षण था। मैंने 'object.tasks.all (: include =>: person) 'कॉल करने के लिए अपना उदाहरण अपडेट किया है। –

संबंधित मुद्दे

 संबंधित मुद्दे