在 rails 中记录具有 has_and_belongs_to_many 关系的数据
Recording data with has_and_belongs_to_many relationship in rails
我是 rails 的新手,我在使用 has_and_belongs_to_many 关系在数据库中记录数据时遇到问题。
我在 events
和 participants
之间有 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 一个(或多个)Participant
在 Event
表单中通过复选框并按下提交按钮时,我可以看到 [=生成了 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: [])
我是 rails 的新手,我在使用 has_and_belongs_to_many 关系在数据库中记录数据时遇到问题。
我在 events
和 participants
之间有 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 一个(或多个)Participant
在 Event
表单中通过复选框并按下提交按钮时,我可以看到 [=生成了 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: [])