2013-10-31 2 views
5

मेरे पास एक ऐसा फॉर्म है जो उपयोगकर्ता को किसी संगठन को पॉप्युलेट करने के लिए मौजूदा रिकॉर्ड खोजने की अनुमति देता है। प्रत्येक "बुकिंग" एक "ग्राहक" से संबंधित है। इसलिए फ़ॉर्म आपको ग्राहक का नाम टाइप करने की अनुमति देता है, यह स्वचालित रूप से एक खोज करता है, और आप जिस ग्राहक को चाहते हैं उसे क्लिक करते हैं। आपके द्वारा टाइप किए जा रहे इनपुट फ़ील्ड को ग्राहक का नाम प्रदर्शित करना चाहिए, लेकिन फ़ॉर्म के लिए काम करने के लिए, मैंने एक छिपे हुए इनपुट फ़ील्ड में customer_id सेट किया है।विभिन्न इनपुट फ़ील्ड के बगल में Simple_Form प्रदर्शन सत्यापन त्रुटि संदेश

मैं सरल_फॉर्म मणि का उपयोग कर रहा हूं। क्या किसी को पता है कि क्या मैं customer_id के लिए टेक्स्ट इनपुट फ़ील्ड के बगल में सत्यापन त्रुटियों को प्रदर्शित कर सकता हूं जो ग्राहक का नाम प्रदर्शित करता है? मॉडल में customer_id आवश्यक है, इसलिए मुझे उपयोगकर्ता को यह बताने के लिए फ़ॉर्म की आवश्यकता है कि अगर वे इसे खाली छोड़ दें।

देखें कोड (सरलीकृत - वहाँ कुछ जावास्क्रिप्ट कि खोज संभालती है जब आप ग्राहक पाठ बॉक्स में टाइप करें, और जब आप कोई चयन कि ग्राहक की आईडी पर छिपा फ़ील्ड में मान सेट):

<%= simple_form_for @booking do |f| %> 
    <%= f.hidden_field :customer_id, id: "customer_id" %> 
    <%= f.input :customer, required: true, 
     input_html: { value: @booking.customer_name } %> 
<% end %> 

उत्तर

15

मुझे अंततः append ब्लॉक के बारे में सरल_form (buried in a pull request में पता चला, कहीं और दस्तावेज नहीं मिला)। असल में, आप उस 0xपर जो भी मार्कअप चाहते हैं उसे जोड़ने के लिए इसका उपयोग कर सकते हैं। मैं निम्नलिखित है, जो सुंदर hacky है किया था, लेकिन यह क्या मैं इसे की जरूरत है ऐसा करने के लिए करता है:

<%= f.input :customer, required: true, 
    wrapper_html: { class: ("error" if @booking.errors[:customer_id].any?) } do %> 
    <%= f.input_field :customer, value: @booking.customer_name %> 
    <%= f.error :customer_id %> 
<% end %> 

पहले, मैं सशर्त आवरण के लिए कक्षा "त्रुटि" जोड़ने के लिए अगर वहाँ संबंधित पर किसी भी त्रुटि के थे फ़ील्ड, फिर मैंने इनपुट क्षेत्र को प्रस्तुत करने के लिए append ब्लॉक का उपयोग किया, इसके बाद मॉडल से संबंधित फ़ील्ड की त्रुटियों के बाद। उम्मीद है कि यह भविष्य में किसी की मदद करता है!

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