コードは正しいようですが、フォームを送信しようとすると、複数選択の値が送信されません。
複数のオプションを削除すると、値が 1 つだけであることを考慮してすべてが期待どおりに機能しますが、トランザクションごとに複数のタグを保存することが重要です。
モデル
トランザクション.rb
class Transaction < ActiveRecord::Base
has_and_belongs_to_many :tags
タグ.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>