रेल simple_form - छिपा क्षेत्र - बनाएँ?


174

आपके पास सरल रूप के साथ एक छिपा हुआ क्षेत्र कैसे हो सकता है?

निम्नलिखित कोड:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

इस त्रुटि के परिणाम:

undefined method `hidden' for #SimpleForm::FormBuilder:0x000001042b7cd0

जवाबों:


309

इसे इस्तेमाल करे

= f.input :title, :as => :hidden, :input_html => { :value => "some value" }

8
धन्यवाद, यह काम किया। = f.input :title, :as => :hidden, :input_html => { :value => "some value" }
लिनस ओलेंडर

5
यह simple_formछिपे हुए इनपुट्स को करने का तरीका है, हालाँकि, यदि केवल एक छिपे हुए इनपुट की आवश्यकता है, तो रेल्स hidden_fieldफॉर्म बिल्डर का उपयोग करें क्योंकि सिंपल फॉर्म सभी फॉर्म बिल्डर विधियों को विरासत में मिला है।
scarver2

281

सबसे छोटा फिर भी !!!

=f.hidden_field :title, :value => "some value"

छोटा, DRYer और शायद अधिक स्पष्ट।

निश्चित रूप से रूबी 1.9 और नए हैश प्रारूप के साथ हम 3 वर्णों को छोटा कर सकते हैं ...

=f.hidden_field :title, value: "some value"

1
या <% = f.hidden_field: term_id,: value => @ transaction.term_id%>
18

2
यह स्वीकृत उत्तर होना चाहिए। भले ही यह प्रश्न सरल रूप के बारे में पूछा गया हो, लेकिन इसका उपयोग करने का कोई कारण नहीं है जब यह एक छोटे वाक्यविन्यास के साथ सटीक एक ही बात को पूरा करता है।
ग्रेग ब्लास

5
= f.input_field :title, as: :hidden, value: "some value"

भी एक विकल्प है। हालाँकि, ध्यान दें कि यह आपके फॉर्म बिल्डर के लिए परिभाषित किसी भी आवरण को छोड़ देता है।


5

सही तरीका (यदि आप Hidden_field इनपुट के मूल्य को रीसेट करने का प्रयास नहीं कर रहे हैं):

f.hidden_field :method, :value => value_of_the_hidden_field_as_it_comes_through_in_your_form

:method वह विधि कहां है जिसे जब वस्तु पर बुलाया जाता है तो आप जिस मूल्य को चाहते हैं

तो ऊपर दिए गए उदाहरण के बाद:

= simple_form_for @movie do |f|
  = f.hidden :title, "some value"
  = f.button :submit

उदाहरण में उपयोग किया गया कोड फॉर्म से पास हो रहे @movie के मान (: शीर्षक) को रीसेट कर देगा। यदि आपको इसे रीसेट करने के बजाय किसी मूवी के मान (: शीर्षक) तक पहुँचने की आवश्यकता है, तो यह करें:

= simple_form_for @movie do |f|
  = f.hidden :title, :value => params[:movie][:title]
  = f.button :submit

फिर से केवल मेरे जवाब का उपयोग करें आप उपयोगकर्ता द्वारा प्रस्तुत मूल्य को रीसेट नहीं करना चाहते हैं।

मुझे लगता है कि इसका मतलब बनता है।


1
के लिए simple_form_for, hiddenयहाँ का उपयोग कर विधि एक त्रुटि को बढ़ाने के लिए जा रहा है undefined method `: # के लिए छिपा हुआ '<0x00007ffa6cde0be8 SimpleForm :: FormBuilder>
Kiry Meas
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.