在 rails 中记录具有 has_and_belongs_to_many 关系的数据

Recording data with has_and_belongs_to_many relationship in rails

我是 rails 的新手,我在使用 has_and_belongs_to_many 关系在数据库中记录数据时遇到问题。

我在 eventsparticipants 之间有 has_and_belongs_to_many 关系

参加者:

class Participant < ActiveRecord::Base
  has_and_belongs_to_many :events, join_table: :events_participants
end

事件:

class Event < ActiveRecord::Base
  has_and_belongs_to_many :participants, join_table: :events_participants
end

event 表格中,我有 collection_check_boxes 至 select 名参与者:

<%= collection_check_boxes(:event, :participants, Participant.all, :id, :name) %>

最后在 events_controller 中,我这样定义需要的参数:

params.require(:event).permit(participants: [:participant_id])

其余代码是由rails g scaffold 命令自动生成的代码。

所以,问题是:当我 select 一个(或多个)ParticipantEvent 表单中通过复选框并按下提交按钮时,我可以看到 [=生成了 24=] SQL,但没有关于 INSERT INTO events_participants

我做错了什么?

提前致谢,

这一行

<%= collection_check_boxes(:event, :participants, Participant.all, :id, :name) %>

应该是

<%= collection_check_boxes(:event, :participant_ids, Participant.all, :id, :name) %>

你还需要更改以下内容

params.require(:event).permit(participants: [:participant_id])

params.require(:event).permit(participant_ids: [])