2016-05-05 36 views
4

あり、多対多:ActiveAdminで多対多を実装する方法は?

class Employee < ActiveRecord::Base 
    has_many :employees_and_positions 
    has_many :employees_positions, through: :employees_and_positions 
end 

class EmployeesAndPosition < ActiveRecord::Base 
    belongs_to :employee 
    belongs_to :employees_position 
end 

class EmployeesPosition < ActiveRecord::Base 
    has_many :employees_and_positions 
    has_many :employees, through: :employees_and_positions 
end 

どのような選択形式で(check_boxes)ポジション従業員を追加実装するために?これは、フォーム内の位置のリストが表示されますが、テーブル(employees_and_positions)には何も保存しません

f.inputs 'Communications' do 
    f.input :employees_positions, as: :check_boxes 
end 

: 私はこのバリアントを書きました。 修正方法?

答えて

4

employeeがあるとしますと、employee.employees_position_idsを使用してemployees_positionsの関連付けのIDを参照できます。したがって、あなたは、アクティブな管理リソースにemployee_position_idsのparamをホワイトリストに登録しましたことを確認し、また、「

= f.input :employee_position_ids, as: :check_boxes, collection: EmployeesPosition.all 

をあなたは質量ごとEmployeesPositionためCHECK_BOXを使用して、既存のEmployeesPositionオブジェクトを割り当てることができますが、employee_position_ids属性を使用する必要があります:

ActiveAdmin.register Employee do 
    permit_params employee_position_ids: [] 
end 

http://activeadmin.info/docs/2-resource-customization.html

関連する問題