コードは正しいようですが、フォームを送信しようとすると、複数選択の値が送信されません。
複数のオプションを削除しただけでは、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>
一括割り当てのために受信したパラメータを適切に許可するものを確認してください。
1つのパラメーターが機能するとおっしゃっていたので、コントローラーのどこかに次のようなものがあると思います。
params.require(:transaction).permit(:name, :tag_ids)
したがって、配列の受信を許可する必要があります。
params.require(:transaction).permit(:name, :tag_ids => [])
私は私の問題を使用して解決しました
{:health_unit_ids => []}
Rails 4は{}なしでは受け入れられません