24

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

複数のオプションを削除すると、値が 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>
4

2 に答える 2

43

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

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

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

したがって、配列を受け取ることを許可する必要があります。

params.require(:transaction).permit(:name, :tag_ids => [])
于 2013-07-30T14:27:30.800 に答える
0

を使用して問題を解決しました

{:health_unit_ids => []}

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

于 2016-04-18T13:55:52.677 に答える