Rails - Создание форм с тройным объединением с использованием раскрывающегося списка и множественного выбора - PullRequest
1 голос
/ 24 февраля 2020

У меня есть 4 модели (здесь ничего не установлено). 1001 *

Class Member < ActiveRecord::Base
  has_many :member_to_clubs
  has_many :clubs, through :member_to_clubs
  has_many :jobs, through :member_to_clubs
end

Class Club < ActiveRecord::Base
end

Class Job < ActiveRecord::Base
end

Class MemberToClub < ActiveRecord::Base
  belongs_to :member
  belongs_to :club
  belongs_to :job
end

Участники могут быть в нескольких клубах. Участники могут иметь несколько рабочих мест в клубах (один и тот же человек может быть президентом, казначеем и т. Д. c.).

Как лучше всего настроить форму / контроллер, чтобы создать их в одной форме? Мой идеальный сценарий - иметь форму, похожую на следующую, и у меня есть полуработающая реализация.

sample form

Клубы выбраны из раскрывающийся список, а затем задания назначаются из мульти-выбора. Есть ли "рельсовый способ" сделать это? Я попытался сделать полностью пользовательскую реализацию, где форма отправляет следующие параметры

"member"=>{"Name"=>"John Smith", "member_to_clubs_attributes"=>{"1582563582187"=>{"club_id"=>"4", "job_id"=>["1", "2"], "_destroy"=>"false"}, "1582563587159"=>{"club_id"=>"3", "job_id"=>["4"], "_destroy"=>"false"}}}

, и у меня есть частный метод в контроллере, который выполняет итерации по member_to_club_attributes, а затем по массиву job_id и создает все необходимые MemberToClub модели (есть и другие вещи, касающиеся редактирования существующих MemberToClub экземпляров, но достаточно сказать, что это работает). Проблема в том, что когда я go вернулся, чтобы отредактировать пользователя с существующими экземплярами MemberToClub, предыдущий пример выглядит так: enter image description here

Я думаю, мои вопросы таковы: Есть ли лучшая модель / настройка ассоциации, которую я могу сделать здесь, и учитывая приведенный выше сценарий ios, каков самый «рельсовый способ» сделать это?

Заранее спасибо за любую помощь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...