activeadmin 中的 Formtastic:有没有一种方法可以使用 select 输入创建多个连接记录,并为关联模型设置 multiple: true?

Formtastic in activeadmin: Is there a way to create multiple join records with a select input with multiple: true for the associated model?

我见过许多与此类似的问题,但 none 回答得很好。我有一个包含连接模型输入的表单。我已经使用单个输入成功创建了其中的几个,但我正在尝试创建一个用户可以从关联记录的下拉列表中 select 多个并为每个 select 创建连接记录编辑。它不起作用,而且参数似乎正在尝试将所有关联的模型 ID 分配给单个连接记录。

class AdminUser < ApplicationRecord
  has_many :admin_locations, dependent: :destroy
  has_many :locations, through: :admin_locations
end

class AdminLocation < ApplicationRecord
  belongs_to :admin_user
  belongs_to :location
end

class Location < ApplicationRecord
 has_many :admin_locations, dependent: :destroy
 has_many :admin_users, through: :admin_locations
end

#in the admin_users edit form
f.has_many :admin_locations,
           allow_destroy: true do |l|
           l.input :location_id,
                   as: :select,
                   include_hidden: false,
                   multiple: true,
                   collection: locs

#in admin/admin_user permitted params
admin_location_ids: [],
admin_locations_attributes: [:id, :location_id, :admin_user_id, :_destroy, :_create, :_update]

我已经通过 admin/ 文件允许了所有参数,但我仍然在回滚时收到错误消息,即 location_id 不是 admin_locations 形式中允许的参数。参数显示所有 selected id 都被分配给单个连接记录:"admin_locations_attributes"=>{"0"=>{"location_id"=>["236", "238", "239", "241"]}}} 有什么方法可以使它工作吗?

哦,哇,谢谢 Ryan Bates。找到了十年前的 rails 回答了这个问题。我把它复杂化了。

这个有效:

f.input :locations,
        allow_destroy: true,
        as: :select,
        include_hidden: false,
        multiple: true,
        collection: locs

无需在表单中嵌套连接。