如何在 ActiveAdmin 中实现多对多?

How to implement a many-to-many in 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)职位? 我写了这个变体:

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

它在表格中显示一个位置列表,但不会将任何内容保存到 table (employees_and_positions)。 如何修复?

假设您有一个 employee,您可以使用 employee.employees_position_ids 引用 employees_positions 关联的 ID。因此,您可以使用 check_box 为每个 EmployeesPosition 批量分配预先存在的 EmployeesPosition 对象,但您需要使用 employee_position_ids 属性

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

此外,请确保您已将 employee_position_ids 参数列入活动管理资源中的白名单:

ActiveAdmin.register Employee do
  permit_params employee_position_ids: []
end

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