159

आपके पास एक साधारण क्षेत्र के साथ एक छुपा क्षेत्र कैसे हो सकता है?रेल सरल_form - छुपा क्षेत्र - बनाएँ?

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

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

ऐसा गलती से हुआ परिणाम:

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

उत्तर

281

इस

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

धन्यवाद, यह काम किया। '= f.input: शीर्षक,: as =>: छुपा,: input_html => {: value =>" कुछ मान "}' – Oleander

+5

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

259

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

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

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

रूबी 1.9 और नए हैश प्रारूप हम 3 अक्षरों के साथ छोटे जा सकते हैं के साथ बेशक

...

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

या <% = f.hidden_field: term_id,: value => @ credit.term_id%> – mirap

+1

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

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

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

6

सही रास्ता (आप 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 

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

मुझे उम्मीद है कि यह समझ में आता है।

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