我有一个用户模型,一个团队模型和一个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
CoachingRole
belongs_to :team
belongs_to :user
我有一个用于编辑用户的表单,其中一部分是将Teams添加到其CoachingRoles。这是我到目前为止的select_tag:
= select_tag "user[coaching_role_ids]", options_for_select(@teams.map {|t| [t.name, t.id]})
该特定行会向用户的coaching_role_ids
添加一个团队ID,但显然不会添加反向。最后我想添加:multiple => true
,并允许选择多个团队添加到用户的CoachingRoles。这样做的最佳方法是什么?
答案 0 :(得分: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
我猜我的桌子设置有点不同。谢谢!