3

使用这行代码:

<%= 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"] 

最重要的是,表单现在正在加载数据库数据。

4

1 回答 1

2

如果您想在电池字段中保存一个数组,您可以使用

serialize :battery, Array

在模型中

于 2013-09-13T08:07:58.957 回答