使用以下代码行:
<%= m.input :battery, :collection => ["1","2","3","4"], :input_html => { :multiple => true } %>
我在表单中看到了一个完美渲染的多选菜单。
但是,当我提交表单时 (选择1和2后)我会收到以下内容:
1.9.3p374 :012 > Style.find(402).battery
Style Load (1.8ms) SELECT `styles`.* FROM `styles` WHERE `styles`.`id` = 402 LIMIT 1
=> "---\n- ''\n- '1'\n- '2'\n"
现在,当我重新加载样式编辑表单时,多选中没有选择任何内容,如果我重新提交,我以前的选择是覆盖:
=> "---\n- ''\n"
显然,表单
没有正确解释所使用的格式控制器更新操作
@style = Style.find(params[:id])
@style.update_attributes(params[:style])
参数哈希
"battery"=>["", "1", "2"]
更新
将serialize :battery, Array
添加到我的样式模型后,我现在看到了:
Style Load (0.1ms) SELECT `styles`.* FROM `styles` WHERE `styles`.`id` = 402 LIMIT 1
=> ["", "1", "2"]
最重要的是,表单现在正在加载数据库数据。
答案 0 :(得分:2)
如果您想在电池领域保存阵列,可以使用
serialize :battery, Array
在模型中