虽然代码似乎是正确的,但当我尝试发送表单时,不会发送多重选择的值。
如果我只是删除了多个选项,一切都按预期工作,仅考虑一个值,但每个事务存储多个标记很重要。
模型
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>
答案 0 :(得分:40)
请确保您正确允许接收参数进行质量分配。
你说过一个参数是有效的,所以我假设你控制器里有什么东西:
params.require(:transaction).permit(:name, :tag_ids)
所以你需要允许接收数组:
params.require(:transaction).permit(:name, :tag_ids => [])
答案 1 :(得分:0)
我用
解决了我的问题{:health_unit_ids => []}
如果没有 {}
,则不接受Rails 4