2012-05-11 12 views
5

मैं रयान बेट्स nested_form gem का उपयोग कर रहा हूं। मैं आदेश को नियंत्रित करने में सक्षम होना चाहता हूं कि यह नेस्टेड फ़ील्ड्स को सूचीबद्ध करता है। मेरे पास एक डिफ़ॉल्ट_स्कोप है जो काम करता है, लेकिन परिदृश्य के आधार पर मुझे इसके ऊपर अधिक नियंत्रण की आवश्यकता है।रेल नेस्टेड_फॉर्म ऑर्डरिंग

आदर्श रूप में

# In controller action 
@nesties = Nesty.order("name desc") 

# In view 
# If @nesties defined the following line would respect the @nesties ordering 
f.fields_for :nesties do |nestie-form| 

की तरह कुछ अभी यह default_scope आदेश का सम्मान करेंगे, लेकिन मैं आदेश को नियंत्रित करने के किसी अन्य तरीके से नहीं मिल रहा।

उत्तर

7

मॉडल nesties सहयोग दिया है कि में:

has_many :nesties, :order => "name DESC" 

यह हालांकि अपने अनुप्रयोग के लिए भी वैश्विक हो सकता है।

लेकिन मूलभूत बात यह है कि फ़ील्ड_for @nesties पर नहीं उठाता है, यह मूल रूप के मॉडल के सहयोग पर उठाता है।

संपादित करें: सुनिश्चित नहीं इस nested_form मणि के साथ काम करेंगे, लेकिन इस समाधान nesties संघ के सामान्य क्रम को प्रभावित नहीं होता:

named_scope :ordered_nesties, :order => "name DESC" 

तो

f.fields_for :ordered_nesties do |nestie-form| 
+1

मैं गुंजाइश/named_scope एक प्रतीक f.fields_for के रूप में काम नहीं कर सकता है, लेकिन: संघ पर आदेश काम करता है। दुर्भाग्य से यह केवल डिफ़ॉल्ट_स्कोप का उपयोग करने से अधिक नियंत्रण प्रदान नहीं करता है, लेकिन जानकारी के लिए धन्यवाद। – jfeust

12

ध्यान दें कि fields_for एक को स्वीकार करता है दूसरा तर्क, और वह जगह है जहां वस्तुओं का उपयोग करने के लिए निर्दिष्ट वस्तुओं/एसोसिएशन निर्दिष्ट करते समय नामित क्षेत्र निर्दिष्ट किया जा सकता है। निम्नलिखित मेरे लिए काम किया। रेल 3.x

#In Model Nestie 
scope :ordered_nesties, order("name DESC") 
belongs_to :parent 

#In Model Parent 
has_many :nesties 

#In View 
f.fields_for :nesties, @parent.nesties.ordered_nesties do |nestie-form| 

उम्मीद है कि इससे मदद मिलती है।

+3

यह शायद स्वीकार्य उत्तर होना चाहिए :) – imderek

+0

देखें ['स्कोप बॉडी को कॉल करने योग्य होना चाहिए'] (http://stackoverflow.com/questions/28951671/argument-error-the-scope-body-needs-to-be -कोल्बल) और उस वाक्यविन्यास सुधार के बाद, यह समाधान मेरे लिए अद्भुत काम करता था। – AOphagen

0

नेस्टेड_फॉर्म मणि एक अजीब व्यवहार प्रतीत होता है (यह मेरी राय में एक बग है)। जब प्रस्तुत करने के लिए संग्रह दिया जाता है - यह इसे प्रस्तुत करने से पहले "आईडी" द्वारा टाइप करता है। यह सबसे अधिक पारदर्शी हो सकता है, लेकिन कुछ परिस्थितियों में शांत अप्रिय है।

शांतनु द्वारा ऊपर दिए गए समाधान ने क्षेत्र को सीधे प्रदान करने के लिए समस्या को हल किया है ताकि nested_forms iterator को प्रस्तुत और प्रभावी ढंग से बाईपास किया जा सके।

मैंने इसे हल करने के लिए 2+ घंटे बर्बाद कर दिए .. धन्यवाद शांतनु!

1

FYI करें, इस बात गुंजाइश

f.fields_for :nesties, @parent.nesties.ordered("name DESC") do |nestie-form| 
1

मैं अपने नेस्टेड प्रपत्र वस्तुओं निम्न विधि का उपयोग कर आदेश दिया प्राप्त करने में सक्षम था बनाने के बिना मेरे लिए काम किया। उम्मीद है, यह किसी और में मदद करता है ...

<%= form.nested_fields_for :evaluations, 
     form.object.evaluations.target.sort_by! { |e| e.skill.sort } do |f| %> 
संबंधित मुद्दे