छुपी हुई फ़ील्ड अपरिभाषित विधि 'मर्ज' त्रुटि


152

मैं कुछ इस तरह से रेल करना चाहता हूं

यहाँ मैं रेल में अब तक क्या है:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service, "test" %>
  <%= f.submit %>
<% end %>

लेकिन तब मुझे यह त्रुटि मिलती है:

undefined method `merge' for "test":String

मैं अपने हिडन_फ़ील्ड में रेल में मान कैसे पास कर सकता हूं?


64
क्या आप एक उत्तर स्वीकार करेंगे?
माफी माँगता हूँ

जवाबों:


417

तुम्हें करना चाहिए:

<%= f.hidden_field :service, :value => "test" %>

hidden_field दूसरे तर्क के रूप में एक हैश की अपेक्षा करता है


9
यह असंगत की तरह है जैसा कि हम यह भी लिखते हैं कि <%= hidden_field_tag :service, "test" %>जब उपयोग नहीं किया जाता है form_for |f|...
ऑगस्टिन रिडिंगर घंटी

55

आप एक hidden_field_tag ​​के बजाय एक hidden_field का उपयोग कर रहे हैं। क्योंकि आप गैर-_tag संस्करण का उपयोग कर रहे हैं, इसलिए यह माना जाता है कि आपके नियंत्रक ने उस विशेषता के लिए मूल्य को पहले ही सेट कर दिया है जो फॉर्म को वापस करता है। उदाहरण के लिए:

नियंत्रक:

def new
  ...
  @order.service = "test"
  ...
end</pre>

राय:

<%= form_for @order do |f| %>
  <%= f.hidden_field :service %>
  <%= f.submit %>
<% end %>

27

यह रूबी 1.9 और रेल 4 में ठीक काम करता है

<%= f.hidden_field :service, value: "test" %>


2

यह भी रेल 3.2.12 में काम करता है:

<%= f.hidden_field :service, :value => "test" %>


0

वैसे, मैं सर्वर से ब्राउज़र पर डेटा भेजने के लिए छिपे हुए फ़ील्ड का उपयोग नहीं करता हूं। डेटा विशेषताएँ कमाल की हैं। तुम कर सकते हो

<%= form_for @order, 'data-service' => 'test' do |f| %>

और फिर jquery के साथ विशेषता मान प्राप्त करें

$('form').data('service')
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.