Rails

2010-12-22 18 views
9

'da bir hidden_field_tag ​​dizisinden bir dizinin geçirilmesi Bunu SO üzerinde question buldum, ancak gerçekten yardımcı olmadı.Rails

Bu yüzden, gizli alan etiketi içinden bir dizi geçirmek istiyorum. Şu an itibariyle benim kodudur: Bir dize olarak kimlikleri geçer beri bu Açıkçası çalışmaz

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

.

Nasıl yaparım?

cevap

27

Merhaba belki daha iyi bir çözüm yoktur ama deneyebilirsiniz Raylar 4 günü

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

Sen ve json onu ayrıştırmak deneyebilirsiniz:

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) 

Ya da sadece virgülle ayrılmış dize yararlanabilecek:

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

yapabileceğiniz:

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

Rails, "[]" alanını alan adına (multiple kullanırken) otomatik olarak ekler ve formu alan denetleyici bunu bir dizi değer olarak görür. , Değer => 123:

+0

hm çalıştı : birden çok => true} "' – Ninigi

+0

@Ninigi Çıktıyı sınamak için kodu kaybettim, "<% = hidden_field" makalesini deneyebilirsin ", id, multiple: true%>' ve çalışıp çalışmadığını görürsem sonra güncelleştiririm cevap? ('hidden_field' yardımcıını kullanarak ve' value: 'olmadan) –

+0

da işe yaramıyor, sadece çoklu seçeneği yok sayar. Hidden_field yardımcısının koduna küçük bir bakış attım. Sonunda, jenerik 'tag' yöntemini kullanır ve çoklu hakkında hiçbir şey bulamadım. Belki bu kullanımdan kaldırılıyor? – Ninigi

1

şu o ` "article_ids"=>" {parametre ile sonuçlanacaktır, hiç benim için, Ruby on benim için doesnt iş 4.1.10

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