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

Die*_*uto 24 forms has-and-belongs-to-many ruby-on-rails-4

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

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

模型

Transaction.rb

class Transaction < ActiveRecord::Base
    has_and_belongs_to_many :tags
Run Code Online (Sandbox Code Playgroud)

Tag.rb

class tag < ActiveRecord::Base
    has_and_belongs_to_many :transactions
Run Code Online (Sandbox Code Playgroud)

视图

<%= form.collection_select :tag_ids, @tags, :id, :name, {}, 
    {:multiple => true} %>
Run Code Online (Sandbox Code Playgroud)

结果:

<select id="transaction_tag_ids" multiple="multiple" name="transaction[tag_ids][]">  
    <option value="1">..</option>
</select>
Run Code Online (Sandbox Code Playgroud)

Ast*_*ery 41

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

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

params.require(:transaction).permit(:name, :tag_ids)
Run Code Online (Sandbox Code Playgroud)

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

params.require(:transaction).permit(:name, :tag_ids => [])
Run Code Online (Sandbox Code Playgroud)