如何将一个模型的记录分配给活动管理员中的另一个关联记录?

How to assign one model's record to another associated record in active admin?

我有一个应用程序可以将申请人注册为 Participants,然后将他们分配给 Groups。这两个模型通过 has_and_belongs_to_many 关系关联。还有其他与Participant相关的挂机模型,但与Groups没有关联。

当我在活动管理员中创建新的 Group 时,我希望能够将 Participant 分配给 Group

我的两个模型通过名为 matchups 的连接 table 连接在一起。

我的Group模型架构如下:

    create_table "groups", force: :cascade do |t|
t.string   "description"
t.integer  "participant_id"
t.datetime "created_at",     null: false
t.datetime "updated_at",     null: false
t.index ["participant_id"], name: "index_groups_on_participant_id"
   end

我的Participant模型架构如下:

    create_table "participants", force: :cascade do |t|
t.string   "first_name"
t.string   "last_name"
t.date     "birthdate"
t.string   "email"
t.string   "phone"
t.string   "street_name"
t.string   "city"
t.string   "state"
t.string   "zip"
t.string   "role"
t.datetime "created_at",  null: false
t.datetime "updated_at",  null: false
t.string   "gender"
   end 

我的活动管理资源允许以下参数: 对于 Groups:

    permit_params :id, :description, :participant_id, :student_detail_id, :volunteer_detail_id

对于Participants

    permit_params :id, :first_name, :last_name, :gender, :email, :birthdate, :phone, :street_name, :city, :state, :zip, :role

当我在活动管理员中创建一个新的 Group 时,我能够填写的唯一字段是:描述。

我想将新组分配给一个或多个:participant_id。

我没有足够的声誉来评论你的post,所以我会提出我的问题作为答案并稍后编辑它。

你能检查你的服务器日志,看看有什么数据被发送到创建操作吗?如果我不得不猜测,participant_id 永远不会被发送。

admin/groups.rb 中编写自定义表单以接受多个 participant_ids 如下所示

ActiveAdmin.register Group do
permit_params :description , participant_ids: []
  form do |f|
    f.inputs 'Group Details' do
      f.input :description
      f.input :participant_ids, as: :check_boxes, collection: Participant.all
     end
  end
end