2013-02-27 43 views
25

Onunla ilişkili bir modeli olmayan bir form var, bu yüzden form_for yerine form_tag kullanıyorum. Beklendiği gibi, kullanıcı formu gönderdiğinde her alanın param karmalarına dahil edilmiştir. Ama form çok değişecek ve ben form formlarını her değiştirdiğimde kontrolörümü değiştirmek zorunda kalmamak için tüm form alanı değerlerini tutacak parazit hash içinde bir karma olmasını tercih ederim.İç içe geçmiş karede form_tag parametreleri

Form alanı değerlerini form_for yapması gibi yuvalanmış bir karma haline getirmenin bir yolu var mı? Ben tüm form alanı almak ve bir ad ifade daha resmi bir şekilde bir form_tag içine fields_for kullanabilirsiniz params[:form_fields].to_json

cevap

50

gibi bir şey yaparak json onları dönüştürmek mümkün istiyorum.

fields_for :form_fields do |ff| 
    ff.text_field :my_text_field 
    ff.select :my_select_tag 
end 

Alternatif böyle gibi tüm formu girişleri, ad alanı:

text_field_tag "form_fields[my_text_field]" 
select_tag "form_fields[my_select_tag]" ... 

vb Sonra Ne istediğini düşünüyorum params[:form_fields] = {:my_text_field => "foo", :my_select_tag => "bar"}, alacak.

+0

Bu tam olarak ihtiyacım olan şeyi yapıyor gibi görünüyor. Teşekkürler! –

+1

Güçlü paramlar bulma sembolü ile eşleşmiyor: my_text_field ": my_text_field" –

+0

tarafından oluşturulan dizgeye girdi öğelerinin dize adları sembollerle eşleştirilir, böylece "my_text_field" ifadesi ": my_text_field" ile eşleşecektir, '': my_text_field ''muhtemelen olmayacak. –

İlgili konular