2010-12-27 21 views
5

पुनर्प्राप्त करें मैं रूबी और रूबी पर रूबी के लिए नया हूं। मैं hide_field सहायक द्वारा बनाए गए इनपुट फ़ील्ड पर उपयोग की जाने वाली आईडी प्राप्त करने का एक तरीका खोजने का प्रयास कर रहा हूं क्योंकि मुझे कुछ जावास्क्रिप्ट जोड़ने की आवश्यकता है जो आईडी द्वारा इनपुट फ़ील्ड प्राप्त करने के लिए jquery का उपयोग करता है।रूबी रेल: फॉर्म इनपुट फ़ील्ड आईडी आईडी

मेरे पास दो मॉडल> ​​व्यक्ति और पता हैं। व्यक्ति has_one पता और पता एक zip_code संपत्ति है।

मैं छिपा क्षेत्रों के साथ एक फार्म उत्पन्न करने के लिए निम्न कोड का उपयोग कर रहा:

<input class="text" id="person_address_attributes_zip_code" name="person[address_attributes][zip_code]" type="hidden" /> 

कोई विधि या सहायक जो मुझे आईडी देता है:

<%= form.fields_for :address do |form| %> 

    <%= form.hidden_field :zip_code %> 

<% end %> 

इस निम्नलिखित एचटीएमएल उत्पन्न करता है किसी दिए गए संपत्ति के क्षेत्र के लिए उपयोग किया जाता है? उदाहरण के लिए, मुझे यह जानने की ज़रूरत है कि: जेड_कोड जेनरेट आईडी "person_address_attributes_zip_code" थी।

अग्रिम में बहुत धन्यवाद। ब्रूनो

उत्तर

1

सबसे आसान तरीका है उदाहरण के लिए, आप जो कुछ भी चाहते हैं होने के लिए मजबूर करने के लिए आईडी होगा:

<%= form.hidden_field :zip_code, :id => 'zip_code' %> 

नाम क्षेत्र अनुरोध मानकों में प्रयोग किया जाता है तो यह कोई फर्क नहीं पड़ता कि क्या आईडी फ़ील्ड इस पर लगा है।

रेल 3 में आईडी निर्धारित करने के तरीके एक्शनपैक/lib/action_view/helpers/form_helper.rb में हैं, ज्यादातर इंस्टेंसटैग मॉड्यूल में। अधिकांश मुख्य पात्रों को हटाने के लिए मुख्य मॉडल नाम पर भिन्नताएं होती हैं, इसके बाद अंडरस्कोर के बाद फ़ील्ड नाम सेनिटाइज्ड किया जाता है, लेकिन नेस्टेड मॉडल और गुण अतिरिक्त जटिलता जोड़ते हैं।

+0

धन्यवाद, मैं मानता हूं कि यह आपके द्वारा सुझाए जाने वाले तरीके से बहुत आसान है। – Bruno

+3

क्या एक सहायक विधि है जिसका उपयोग वास्तव में इन उत्पन्न आईडी को प्राप्त करने के लिए किया जा सकता है? व्यक्तिगत आईडी सेट करने के बजाय? – freethinker

5

फ़ॉर्म बिल्डर के पास ऑब्जेक्ट नाम तक पहुंच है, जिसका उपयोग आप जेनरेट आईडी पर प्राप्त करने के लिए कर सकते हैं, यह देखते हुए कि आप फ़ील्ड नाम जानते हैं। मैंने रेल 3:

<%= form.fields_for :addresses do |form|%> 
    <%= "#{form.object_name}[zip_code]".gsub(/(\])?\[/, "_").chop %> 
    <%= form.text_field :zip_code %> 
<% end %> 
संबंधित मुद्दे