web-dev-qa-db-ja.com

Rails 4を使用したHABTM関係の複数選択の問題

コードは正しいようですが、フォームを送信しようとすると、複数選択の値が送信されません。

複数のオプションを削除しただけでは、1つの値だけを考慮してすべてが期待どおりに機能しますが、トランザクションごとに複数のタグを格納することが重要です。

モデル

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>
24
Diego Couto

一括割り当てのために受信したパラメータを適切に許可するものを確認してください。

1つのパラメーターが機能するとおっしゃっていたので、コントローラーのどこかに次のようなものがあると思います。

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

したがって、配列の受信を許可する必要があります。

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

私は私の問題を使用して解決しました

{:health_unit_ids => []}

Rails 4は{}なしでは受け入れられません

0