嵌套哈希中的Form_tag参数

Kev*_*son 31 ruby-on-rails

我有一个没有与之关联的模型的表单,所以我使用form_tag而不是form_for.正如所料,当用户提交表单时,每个字段都包含在params散列中.但是表单会发生很大变化,我宁愿在params哈希中有一个哈希值,它将保存所有表单字段值,这样我每次更改表单时都不必更改控制器.

有没有办法将表单字段值放入像form_for那样的嵌套哈希?我希望能够通过做类似的事情来获取所有表单字段并将它们转换为jsonparams[:form_fields].to_json

Mik*_*ell 58

您可以fields_for在内部使用form_tag更正式的表达命名空间的方式.

fields_for :form_fields do |ff|
  ff.text_field :my_text_field
  ff.select :my_select_tag
end
Run Code Online (Sandbox Code Playgroud)

或者只是命名所有表单输入,如下:

text_field_tag "form_fields[my_text_field]"
select_tag "form_fields[my_select_tag]" ...
Run Code Online (Sandbox Code Playgroud)

那么你会得到params[:form_fields] = {:my_text_field => "foo", :my_select_tag => "bar"},我认为这是你想要的.