2010-03-11 16 views
5

मुझे लगता है कि मॉड्यूल बुलाया मदों की एक सूची प्रदर्शित करता है एक रेल एप्लिकेशन मिल गया है कारण बनता है। मैं इन पर पुनरावृत्ति कर रहा हूं, प्रत्येक के लिए आंशिक प्रस्तुत करता हूं जिसमें एक दूरस्थ_form_for कॉल शामिल है। मेरी प्रपत्र पाठ फ़ील्ड क्योंकि सभी एक ही आईडी होनाएक ही पृष्ठ पर एकाधिक remote_form_for डुप्लीकेट आईडी

यह सब काम करता है, लेकिन HTML सत्यापन विफल रहता है। प्रपत्र (या कुछ और) मैं इस के आसपास पाने के लिए उपयोग कर सकते हैं पर उपसर्ग विकल्प:

वहाँ एक है?

अद्यतन:
(कुछ कोड)

//_module_form.html.erb 
    <% remote_form_for app_module do |f| %> 
     <%= f.label :name %> 
     <%= f.text_field :name %> 
     <%= submit_tag 'Save' %> 
    <%end %> 

    //parent page 
    <% @thing.modules.each do |app_module| %> 
     <%= render :partial => "module_form", :locals => { :app_module => app_module } %> 
    <% end %> 

तो अगर मैं संग्रह में 1 से अधिक आइटम है, मैं एक ही पृष्ठ पर समान रूप है, और फार्म आईडी और पाठ बॉक्स आईडी प्रस्तुत करना दोहराया गया है ।

मैं, बहुत आसानी से प्रपत्र आईडी अनुकूलित कर सकते हैं, लेकिन क्या text_box के बारे में के बाद से नियंत्रक विशिष्ट नामित नियंत्रण के लिए लग रही है? collection.each_with_index do |item, i| साथ उन पर

+0

हम कुछ कोड की जरूरत को समझने के लिए – shingara

+0

आप अपने कोड पर सवाल उठाने जोड़ा जा सकता:

यहाँ इन क्षेत्रों पैदा करने के लिए कोड मैं एक सामान्य सहायक में उपयोग क्यों करें? – klew

+0

कुछ कोड जोड़ा गया। –

उत्तर

2

जोड़ें अपना फॉर्म बनाते समय :index => object.id विकल्पों में हैश। यह नियंत्रक के साथ हस्तक्षेप किए बिना object_id_attribute के रूप में आईडी उत्पन्न करना चाहिए।

संपादित

:index के बारे में प्रलेखन है अस्पष्ट भ्रामक है। :index फॉर्म सबमिशन पर असर पड़ता है। समाधान प्रत्येक क्षेत्र के लिए :id विशेषता निर्दिष्ट करना है। यह id संपत्ति बदलने के लिए, name कोई नुकसान नहीं पहुंचा (जो क्या प्रस्तुत करने के लिए मायने रखता है) छोड़ देगा।

def create_field(f, field_type, object, field_name) 
    field_id = "#{object.class.name.downcase}_#{object.id.to_s}_#{field_name.to_s}" 
    f.send(field_type, field_name, :id => field_id) 
end 
1

दोहराएं तो एक स्थानीय चर में आंशिक पास प्रस्तुत करना पर:

render :partial => "some_partial", :locals => {:form_id => "form_id_#{i}"} 

फिर आंशिक में आप <%= form_id %>

उपयोग कर सकते हैं कि एक तरह से यह करने के लिए किया जाएगा।

मैं remote_form_for में यह सोचते हैं रहा हूँ आप में पारित कर सकते हैं: आईडी => form_id या: html_options => {: आईडी => form_id}

ऐसा लगता है कि कर सकते हैं, देखें: http://api.rubyonrails.org/classes/ActionView/Helpers/PrototypeHelper.html#M001649

+0

कि पाठ बॉक्स आईडी के बारे में मेरे डुप्लीकेट प्रपत्र आईडी के पते, लेकिन क्या? –

+0

आप आईडी_ को टेक्स्ट_फील्ड सहायक में आईडी में सेट करके, टेक्स्ट_फील्ड में एक ही फैशन में सेट कर सकते हैं। इनपुट फ़ील्ड पर नाम विशेषता को फॉर्म हेल्पर द्वारा किसी भी तरह से ख्याल रखा जाना चाहिए। कुछ ऐसा क्यों न करें: id => "app_module _ # {app_module.id} _name" – tsdbrown

+0

यदि मैं ऐसा करता हूं, तो मेरा नियंत्रक अब सही तरीके से कार्य नहीं करता है, क्योंकि इसमें पोस्ट किए गए पैराम को समझ में नहीं आता है। –

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