Параметры Form_tag во вложенном хеше
У меня есть форма, у которой нет связанной с ней модели, поэтому я использую form_tag
, а не form_for
. Как и ожидалось, когда пользователь отправляет форму, каждое из полей включается в хэш-код params. Но форма сильно изменится, и я предпочел бы иметь хэш внутри хэша params, который будет содержать все значения полей формы, так что мне не придется менять свой контроллер каждый раз, когда я меняю свою форму.
Есть ли способ поместить значения поля формы в вложенный хеш, например form_for? Я хотел бы иметь возможность принимать все поля формы и преобразовывать их в json, делая что-то вроде params[:form_fields].to_json
Ответы
Ответ 1
Вы можете использовать fields_for
внутри form_tag
для более формального способа выражения пространства имен.
fields_for :form_fields do |ff|
ff.text_field :my_text_field
ff.select :my_select_tag
end
Альтернативно просто namespace все ваши входы формы, как таковые:
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"}
, который, я думаю, вам нужен.