使用Rails 4的HABTM关系的多选问题

时间:2013-07-18 21:25:54

标签: forms ruby-on-rails-4 has-and-belongs-to-many

虽然代码似乎是正确的,但当我尝试发送表单时,不会发送多重选择的值。

如果我只是删除了多个选项,一切都按预期工作,仅考虑一个值,但每个事务存储多个标记很重要。

模型

Transaction.rb

class Transaction < ActiveRecord::Base
    has_and_belongs_to_many :tags

Tag.rb

class tag < ActiveRecord::Base
    has_and_belongs_to_many :transactions

查看

<%= form.collection_select :tag_ids, @tags, :id, :name, {}, 
    {:multiple => true} %>

结果:

<select id="transaction_tag_ids" multiple="multiple" name="transaction[tag_ids][]">  
    <option value="1">..</option>
</select>

2 个答案:

答案 0 :(得分:40)

请确保您正确允许接收参数进行质量分配。

你说过一个参数是有效的,所以我假设你控制器里有什么东西:

params.require(:transaction).permit(:name, :tag_ids)

所以你需要允许接收数组:

params.require(:transaction).permit(:name, :tag_ids => [])

答案 1 :(得分:0)

我用

解决了我的问题
{:health_unit_ids => []}

如果没有 {}

,则不接受Rails 4