2013-02-27 25 views
25

私にはモデルが関連付けられていないので、form_forではなくform_tagを使用しています。予想どおり、ユーザーがフォームを送信すると、各フィールドはparamsハッシュに含まれます。しかし、フォームが大きく変更され、私は私のフォームを変更するたびにコントローラを変更する必要がないようにフォームフィールドの値を保持するparamsハッシュ内にハッシュを持つことを好むだろう。ネストされたハッシュのForm_tagパラメータ

form_forのようにネストされたハッシュにフォームフィールド値を入れる方法はありますか? params[:form_fields].to_json

答えて

50

fields_forform_tagの中で使用すると、より正式なネームスペースの表現方法が得られます。

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

また単なるなど、すべてのフォーム入力を名前空間:

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

などそして、あなたは私はあなたが欲しいものだと思うparams[:form_fields] = {:my_text_field => "foo", :my_select_tag => "bar"}を取得します。

+0

これは、私が必要とするものを正確にやっているようです。ありがとう! –

+1

私は強力なparamsがシンボルと一致しないことを発見しています:my_text_fieldこれは ":my_text_field"の文字列に –

+0

入力要素の文字列名はシンボルにマップされるので、 '' my_text_field "'は ':my_text_field'と一致します。 '':my_text_field "'はおそらくそうではありません。 –

関連する問題