Rails3 多选表单和数据库字段

Posted

技术标签:

【中文标题】Rails3 多选表单和数据库字段【英文标题】:Rails3 multi-select form and database field 【发布时间】:2012-07-31 15:15:55 【问题描述】:

我有一个应用程序,我正在对模型进行 collection_select。我需要能够从 SpecialEquipment 中选择多个 ID。

这是我的选择语句:

<%= f.collection_select(:special_equipment_id, SpecialEquipment.all, :id, :name,  , :multiple => true, :class => 'select')%>

我正在使用 select2 gem 使 UI 更具吸引力,它允许我选择多个 id,但是当表单写入数据库时​​,它只写入第一个选择。

1.9.3p194 :004 > Call.last.special_equipment
  Call Load (0.9ms)  SELECT "calls".* FROM "calls" ORDER BY "calls"."id" DESC LIMIT 1
  SpecialEquipment Load (0.3ms)  SELECT "special_equipments".* FROM "special_equipments" WHERE "special_equipments"."id" = 1 LIMIT 1
 => #<SpecialEquipment id: 1, name: "O2", created_at: "2012-06-27 21:43:41", updated_at: "2012-06-27 21:43:41"> 

我做错了什么?我的关联设置如下:

调用.rb 属于_to :special_equipment

Special_Equipment.rb has_many :calls

【问题讨论】:

我不是 100% 确定,但我认为我应该使用 HABTM 关联来完成这项工作。谁能证实这一点? 【参考方案1】:

这是通过使用 has_many :through 关联并将表单输入写入连接表来解决的。我现在可以多选并正确保存记录。

【讨论】:

以上是关于Rails3 多选表单和数据库字段的主要内容,如果未能解决你的问题,请参考以下文章

提交已作为对象存在的表单数据(rails3.22)

通过 rails3-jquery-autocomplete 使用多个输入字段

表单提交未收到多个 html 选择

表单中的多项选择字段在重置数据库时引发异常

Rails3:将一个数据库中的字段包含到另一个模型中

如果没有可用数据,rails3-jquery-autocomplete 清除字段