2011-10-11 7 views
13

मैं hidden_fields की तकनीकी परिभाषा के माध्यम से पढ़ता हूं, लेकिन मुझे यकीन नहीं है कि यह वास्तव में क्या करता है। मेरी समझ यह है कि यह आपको कुछ मानकों के लिए एक विशेषता में गुजरने की अनुमति देता है। उदाहरण के लिए, यदि आपके पास समृद्ध शामिल मॉडल है, तो उपयोगकर्ता के लिए मॉडल विशेषता में शामिल होने के लिए user_id को असाइन करने के लिए आप hidden_field का उपयोग कर सकते हैं। क्या वो सही है?रेल - क्या hide_field और hidden_field_tag ​​वास्तव में करता है?

यदि हां, तो क्या यह फ़ॉर्म या नियंत्रक में करना बेहतर होगा?

+1

'hidden_field' बस बनाता है' "'। – Zabba

उत्तर

29

उन दोनों विधियों में एचटीएमएल इनपुट टैग "छुपा" प्रकार बनाने के लिए मददगार हैं, और हां, उनको अनुरोध (आमतौर पर एक फॉर्म पोस्ट) में पैरामीटर जोड़ने के लिए उपयोग किया जाता है। वास्तव में पैरामीटर उस जानकारी का कोई भी टुकड़ा हो सकता है जिसे आप अनुरोध के साथ भेजना चाहते हैं। सावधान रहें, हालांकि, छुपे हुए फ़ील्ड आसानी से छेड़छाड़ कर रहे हैं।

यहाँ एक उदाहरण है कि इस तरह इस तरह user_id के रूप में एक छिपी हुई फ़ील्ड

# Form 
<%= form_tag foo_path do %> 
    <%= hidden_field_tag "user_id", @user.id %> 
    .... 
    <%= submit_tag "Click Me" %> 
<% end %> 

# Controller 
def foo 
    # params[:user_id] is set with the value from the hidden field 
    # Do useful stuff with the POST data 
end 

आप चीजों को पारित कर सकते हैं जबकि एक प्रयोक्ता आईडी भेज देंगे है, मैं लगता है कि यह के लिए की जरूरत दुर्लभ है। यदि किसी दिए गए परिस्थिति के लिए हमेशा उपयोगकर्ता_आईडी की आवश्यकता होती है तो आप घोंसला वाले मार्गों का उपयोग करने पर विचार कर सकते हैं http://guides.rubyonrails.org/routing.html#nested-resources

+0

ogz की @wizard धन्यवाद। मैं 'सोचा hidden_field' होगा सुरक्षित नहीं है। मैं इसे 'निर्माण' विधि में नियंत्रक के माध्यम से सहेजने की कोशिश कर रहा हूं, लेकिन मुझे परेशानी का सामना करना पड़ रहा है। जब आप समृद्ध जुड़ने वाले मॉडलों के माध्यम से एसोसिएशन करते हैं, तो क्या वे स्वचालित रूप से user_id जैसी चीज़ों को अपडेट करना चाहते हैं? यदि हां, तो मैं स्पष्ट रूप से मेरे संगठनों के साथ कुछ गलत कर रहा हूं। धन्यवाद। मैंने यहां एक और प्रश्न भी पोस्ट किया: [प्रश्न] (http://stackoverflow.com/questions/7740873/nested-attributes-not-saving-the-user-id-in-join- टेबल) यदि आप एक नज़र रखना चाहते हैं। धन्यवाद। – noob

+0

आह, मुझे लगता है कि समस्या को दूसरे प्रश्न में बेहतर समझाया गया है, मैं वहां पोस्ट करूंगा –

10

यह इनपुट क्षेत्र के एक छिपे हुए प्रकार उत्पन्न होगा ...

<input type="hidden" />

यह जानकारी है कि आप एक दृश्य क्षेत्र के लिए बिना फॉर्म के द्वारा जमा करना चाहते हैं स्टोर करने के लिए एक तरीका है।

documentation से:

hidden_field_tag 'tags_list' उत्पन्न करता है ...
<input id="tags_list" name="tags_list" type="hidden" />

hidden_field_tag जबकि hidden_field एक form_for कॉल और एक मॉडल के साथ संयोजन के रूप में इस्तेमाल किया जा करने के लिए है एक मॉडल के बिना इस्तेमाल किया जा करने के लिए है।

hidden_field(:signup, :pass_confirm) उत्पन्न करता है ...
<input type="hidden" id="signup_pass_confirm" name="signup[pass_confirm]" value="#{@signup.pass_confirm}" />

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