2013-02-27 89 views
25

我有一個沒有與之關聯的模型的表單,所以我使用的是form_tag而不是form_for。正如所料,當用戶提交表單時,每個字段都包含在params散列中。但是表單會發生很大的變化,我希望在params散列中包含所有表單字段值,以便每次更改表單時都不必更改控制器。嵌套哈希中的Form_tag參數

有沒有辦法將表單字段值放入類似form_for的嵌套哈希中?我希望能夠把所有的表單字段並通過執行類似params[:form_fields].to_json

回答

50

可以使用fields_for一個form_tag內表達一個命名空間的更正式的方式轉換成JSON。

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

這似乎正在做我所需要的。謝謝! – 2013-02-27 15:59:05

+1

我發現強參數與符號不匹配:my_text_field與此生成的字符串「:my_text_field」 – 2014-08-26 17:59:46

+0

輸入元素的字符串名稱映射到符號,所以''my_text_field「'將匹配':my_text_field', '「:my_text_field」'可能不會。 – 2014-08-27 09:04:58