使用这行代码:
<%= 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"]
最重要的是,表单现在正在加载数据库数据。