У меня есть модель User, модель Team и модель CoachingRole. Модель CoachingRoles служит для объединения пользователей и команд, потому что между пользователями и командами уже существует одна ассоциация. Соответствующие ассоциации настроены так:Обновление нескольких объектов с помощью select_tag в Rails
Пользователь:
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
У меня есть форма для редактирования пользователя и части это добавить команды в CoachingRoles. Вот select_tag, что у меня до сих пор:
= select_tag "user[coaching_role_ids]", options_for_select(@teams.map {|t| [t.name, t.id]})
Эта конкретная линия будет добавить идентификатор команды в пользователя coaching_role_ids
, но явно не добавляет обратное. В конце концов я хотел бы добавить :multiple => true
к этому и разрешить выбор нескольких команд для добавления в CoachingRoles пользователя. Каков наилучший способ сделать это?
Завершите, но принимаю ответ, поскольку он был почти на месте. Спасибо за подталкивание в правильном направлении. Вот что сработало: '' 'select_tag (« user [coaching_role_ids] [] »), options_from_collection_for_select (Team.all,: id,: name, @ user.coaching_role_ids),: multiple => true' '' – cmhobbs
Отлично, что это помогает , Мое оригинальное решение сработало для меня. Позвольте мне дважды проверить и посмотреть, как мои таблицы и модели настроены, чтобы увидеть, пропустил ли я что-нибудь. – yuklai