0

我有一个 User 模型、一个 Team 模型和一个 CoachingRole 模型。CoachingRoles 模型用于关联用户和团队,因为用户和团队之间已经存在一对多关联。各自的关联设置如下:

用户:

has_many :coaching_roles
has_many :teams_coaching, :through => :coaching_roles, :source => :team

团队:

has_many :coaching_roles
has_many :coaches, :through => :coaching_roles, :source => :user

教练角色

belongs_to :team
belongs_to :user

我有一个表单来编辑用户,其中一部分是将团队添加到其 CoachingRoles。这是我到目前为止的 select_tag:

= select_tag "user[coaching_role_ids]", options_for_select(@teams.map {|t| [t.name, t.id]})

该特定行会将 Team id 添加到 User's coaching_role_ids,但显然不会添加相反的内容。最终,我想添加:multiple => true它并允许将多个团队的选择添加到用户的 CoachingRoles 中。这样做的最佳方法是什么?

4

1 回答 1

0

我在我的实现中使用了这个。

假设 Team 具有 name 属性和 selected_team_ids 方法,该方法返回为该用户选择的团队 ID 数组。

select_tag ("user[coaching_role_ids][]"), options_from_collection_for_select(Team.all, :id, :name, @user.coaching_role_ids), :multiple => true 

希望它有帮助!

编辑:我根据@nilmethod 自己的发现编辑了上面的解决方案。我原来的解决方案是:

select_tag ("user[teams][]"), options_from_collection_for_select(Team.all, :id, :name, @user.team_ids), :multiple => true 

我猜我的桌子当时的设置有点不同。谢谢!

于 2012-07-03T06:34:37.997 回答