2010-12-22 2 views
9

में एक hidden_field_tag ​​के माध्यम से एक सरणी पास करना मुझे SO पर यह question मिला, लेकिन यह वास्तव में मदद नहीं करता था।रेल

तो, मैं एक छिपे हुए फ़ील्ड टैग के माध्यम से एक सरणी पास करना चाहता हूं। अब तक मेरी कोड है: के बाद से यह एक स्ट्रिंग के रूप आईडी गुजरता

<%= hidden_field_tag "article_ids", @articles.map(&:id) %> 

यह स्पष्ट रूप से काम नहीं करता।

मैं इसे कैसे कर सकता हूं?

उत्तर

27

हाय शायद बेहतर समाधान है, लेकिन आप कोशिश कर सकते हैं

<% @articles.map(&:id).each do |id| %> 
    <%= hidden_field_tag "article_ids[]", id %> 
<% end %> 
1

आप को और json से यह पार्स करने के लिए कोशिश कर सकते:

articles_list = @articles.map(&:id).to_json # gives u: [1,2,3,4,5] 
              # note that the result is a string instead of an array 
article_ids = JSON.parse(articles_list) 

या फिर आप अल्पविराम से अलग स्ट्रिंग का उपयोग कर सकता:

articles_list = @articles.map(&:id).join(",") # gives u: 1,2,3,4,5 
               # note that this result is a string also 
article_ids = articles_list.split(/,/).map(&:to_i) 
0

रेल 4 पर आप कर सकते हैं:

<% @articles.map(&:id).each do |id| %> 
    <%= hidden_field_tag "article_ids", value: id, multiple: true %> 
<% end %> 

चूंकि रेल स्वचालित रूप से फ़ील्ड के नाम पर "[]" जोड़ते हैं (multiple का उपयोग करते समय) और फॉर्म प्राप्त करने वाले नियंत्रक को मानों की सरणी के रूप में दिखाई देगा।

+0

एचएम, यह does not काम है, यह '" article_ids "=>" {एक पैरामीटर में परिणाम होगा: मूल्य => 123, : एकाधिक => सत्य} "' – Ninigi

+0

@Ninigi मैंने आउटपुट का परीक्षण करने के लिए कोड खो दिया है, क्या आप '<% = hidden_field" article_ids ", id, एकाधिक: true%> 'आज़मा सकते हैं और देख सकते हैं कि यह काम करता है तो मैं अपडेट करूंगा उत्तर? ('hidden_field' सहायक का उपयोग करके और' value के बिना: ') –

+0

या तो काम नहीं करता है, यह केवल एकाधिक विकल्प को अनदेखा करता है। मैंने छुपा_फील्ड सहायक के लिए कोड पर एक छोटा सा रूप लिया है। अंत में, यह सामान्य 'टैग' विधि का उपयोग करता है और मुझे एकाधिक के बारे में कुछ भी नहीं मिला। शायद यह बहिष्कृत है? – Ninigi

1

निम्नलिखित बिल्कुल मेरे लिए ऑन रेल्स मेरे लिए काम किया 4.1.10

<% @your_array.map().each do |array_element| %> 
    <%= hidden_field_tag "your_array[]", array_element %> 
<% end %>