34

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

form_forのようにフォームフィールドの値をネストされたハッシュに入れる方法はありますか?すべてのフォームフィールドを取得して、次のようにしてjsonに変換できるようにしたいと思います。params[:form_fields].to_json

4

1 に答える 1

62

名前空間を表現するためのより正式な方法として、のfields_for内部を使用できます。form_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"}、それはあなたが望んでいたものだと私は思います。

于 2013-02-27T15:43:21.867 に答える