2013-05-02 6 views
5

複数の雇用主に割り当てを割り当てる必要があるアプリケーションを構築しています。Rails 4:has_manyを使ったチェックボックス

は、私はこれらのモデルを構築する必要があり:

#assignment.rb 
class Assignment < ActiveRecord::Base 
    has_many :employer_assignments 
    has_many :employers, :through => :employer_assignments 
end 

#employer.rb 
class Employer < ActiveRecord::Base 
    has_many :employer_assignments 
    has_many :assignments, :through => :employer_assignments 
end 

#employer_assignment.rb 
class EmployerAssignment < ActiveRecord::Base 
    belongs_to :employer 
    belongs_to :assignment 
end 

をそして今、私は、フォームがemployer_assignmentテーブルに保存することが、私は自分のフォームのために使用される次のコードは動作しませんします。

<div class="field"> 
    <%= f.label :employer_ids %><br /> 
    <%= collection_check_boxes(:assignment, :employer_ids, Employer.all, :id, :name) %> 
</div> 

私が追加しました:私は割り当てを作成しますがemployer_assignmentテーブル内のレコードを作成しませんフォームを送信しようとしているから、私の割り当てコントローラにemployer_idsを。 コンソール(Assignment.last.employers < < Employer.all )からそれらを追加すると、すべて正常に動作します。私は何かが不足していると確信していますが、何が分かりません。

ありがとうございます。

+0

解決策を見つけましたか?私も同様の問題があります。 DBに保存しません – Benjamin

+1

IIRCレール4は、デフォルトでは強力なパラメータを使用しますが、これは配列タイプをサポートしていません。したがって、 'employer_ids'が配列でなければならないことを明示的に定義する必要があります。 –

答えて

9

rails4のStrong Parameters(@ emil-kamppがこれに言及しています)のためログにUnpermitted parameters:が表示されている可能性があります。また、これを答えるSO上でこのQuestionを参照してください

class EmployersController < ApplicationController 
    # <snip> 
    def update 
    @employer.update(employer_params) 
    end 

    def employer_params 
    params.require(:employer).permit(:name, { :employer_ids => [] }) 
    end 
end 

:だから、それはのようになりますあなたのコードを使用して。うまくいけば、これは誰かに数サイクルを節約します。

関連する問題