2009-12-17 10 views
5

मेरे पास चयन बॉक्स है जहां परिवर्तन पर मुझे मूल्य को पकड़ने की आवश्यकता है और रिमोट फ़ंक्शन के माध्यम से डीबी से कुछ फ़ील्ड नाम प्राप्त होते हैं और फिर उन फ़ील्ड को आगे बढ़ाकर चुनिंदा बॉक्स से व्हाटऑप्शन पर डालने वाले फॉर्म को नीचे ले जाते हैं।रेल में रिमोट_फंक्शन में पास फॉर्म बिल्डर पास करें?

समस्या यह है कि फ़ील्ड f.form_for में हैं, इसलिए फॉर्मबिल्डर एफ का उपयोग कर रहे हैं जिसमें चयनित बॉक्स है। इसलिए जब मैं नियंत्रक में AJAX के माध्यम से आंशिक प्रस्तुत करता हूं तो मुझे एक त्रुटि मिलती है क्योंकि मेरे पास कोई त्रुटि नहीं है स्थानीय फॉर्म बिल्डर एफ के संदर्भ में।

क्या कोई जानता है कि फॉर्म निर्माता का संदर्भ कैसे प्राप्त किया जा सकता है या अगर मैं रिमोट फ़ंक्शन कॉल में पास कर सकता हूं और फिर आंशिक रूप से अपने स्थानीय लोगों में प्रवेश कर सकता हूं?

बहुत बहुत धन्यवाद, इस मदद पर बहुत मदद मिलेगी!

चियर्स रिक

उत्तर

7

मैं बस अपने च का उपयोग नहीं करने के लिए आंशिक पुनर्लेखन होगा। फॉर्म हेल्पर्स

है:

<%= text_field :object_name, :method_name %> 

बजाय:

<%= f.text_field :method_name %> 
+0

इसने मेरे प्रश्न का उत्तर यहां दिया: http://stackoverflow.com/questions/8821613/rails-lookup-table-with-dynamic-nested-forms – Karl

+0

हे कार्ल, जो प्रश्न आपने लिंक किया है वह गायब है। क्या आपको याद है कि यह क्या था? मेरी भी यही समस्या है। धन्यवाद! –

18

मैं एक ही समस्या थी और मेरे समाधान एक ही वस्तु के लिए एक और रूप बिल्डर बनाने के लिए और आंशिक के लिए उस पर पारित करने के लिए किया गया था।

remote_action.js.erb:

'<%= form_for(@object) do |ff| %>' 
    $('#some_div').html("<%= j render(partial: 'some_partial', locals: {f: ff}) %>" 
'<% end %>' 

यह महत्वपूर्ण है कि form_for टैग एकल उद्धरण है या फिर वहाँ javascript_escape समस्याओं हो जाएगा।

+0

ग्रेट, काम करता है। आंशिक रेंडर पर बंद होने वाले ब्रैकेट्स गायब थे और मुझे लाइन में "/" को हटाना पड़ा। –

+0

यह मेरे लिए काम करता है जब मुझे एहसास हुआ कि "@object" द्वारा आप अपने कंट्रोलर (जिसे AJAX के लिए बुलाया गया है) में कुछ इंस्टेंस वैरिएबल का जिक्र है ... जो मेरे मामले में @property (आदि ...) मेरा लग रहा था यह: vcavanna

+0

अरे, क्षमा करें अगर मैं पर्याप्त स्पष्ट नहीं कर पा रहा हूं ... –

0

यह स्निपेट टिप्पणियों में एक अलग उत्तर में फिट नहीं हुआ ... यह उस मामले को चित्रित करने में मदद करता है जहां आंशिक मॉडल के लिए आंशिक है, और रिमोट विधि/क्रिया में संदर्भित किया गया है। यह भी दिखाता है कि @object की मेरी शाब्दिक अर्थ गलत थी:

'<%= form_for([@property.agency,@property]) do |parent_form| %> ' '<%= parent_form.fields_for :address do |f| %>' $('#property_addresses').append("<%= j render(partial: 'common_partials/address', locals: {parent_form: f}) %>") '<% end %>' '<% end %>'

ध्यान दें, कि यह एक @property है, @ property.agency अंतर्गत नेस्टेड: जहां हम एक fields_for form_for अंतर्गत नेस्टेड है।

2

मैं क्या उरी Klar सुझाव दिया करने के लिए कुछ इसी तरह कर रहा हूँ, लेकिन फार्म तत्वों स्ट्रिंग के रूप में, ग्राहक के लिए वापस गुजर बाद से वे आवश्यक नहीं हैं बिना:

# create a form helper 'f' and store it in the variable form_helper. 

<% form_helper = nil %> 
<% form_for @object, url: '' do |f| %> 
<% form_helper = f %> 
<% end %> 

# pass form_helper to the form partial 

$('#element').html('<%= j render "form_element", f: form_helper %>'); 

सूचना है कि form_helper = nil पहली पंक्ति पर है चर के दायरे को फॉर्म के ब्लॉक से परे होने के लिए सेट करने के लिए।

मुझे लगता है कि यह एक बेहतर दृष्टिकोण है क्योंकि यह क्लाइंट को हमारे आंतरिक कार्यों में से किसी एक को बेनकाब नहीं करता है, बल्कि उन्हें पूरी तरह से सर्वर की तरफ रखता है।

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