Подтвердить что ты не робот

Параметры Form_tag во вложенном хеше

У меня есть форма, у которой нет связанной с ней модели, поэтому я использую form_tag, а не form_for. Как и ожидалось, когда пользователь отправляет форму, каждое из полей включается в хэш-код params. Но форма сильно изменится, и я предпочел бы иметь хэш внутри хэша params, который будет содержать все значения полей формы, так что мне не придется менять свой контроллер каждый раз, когда я меняю свою форму.

Есть ли способ поместить значения поля формы в вложенный хеш, например form_for? Я хотел бы иметь возможность принимать все поля формы и преобразовывать их в json, делая что-то вроде params[:form_fields].to_json

4b9b3361

Ответ 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"}, который, я думаю, вам нужен.