Как сжать f.select в один выпадающий столбец, похожий на select_tag - PullRequest
0 голосов
/ 20 марта 2020

Я рефакторинг некоторых html / haml на странице, и я пытаюсь правильно использовать формы, чтобы упростить некоторый код представления / контроллера. Вот сценарий, который у меня есть.

Для начала, у меня есть модель, которая выглядит следующим образом:

class NotificationGroup < ApplicationRecord

  has_many :notification_groups_subjects, dependent: :destroy
  accepts_nested_attributes_for :notification_groups_subjects

end 

Вот фрагмент исходного кода представления, который производит желаемый эффект, который Я хочу.

.group_block.clearfix
    #subjects-container
      = select_tag :subjects_list, options_for_select(@notification_group.notification_group_subjects.map(&:domain_name), multiple: true, data: { placeholder: "click here to add/remove/edit domains." }

И вот как это выглядит для представления enter image description here

Я рефакторинг кода, пытаюсь сделать его чище и поскольку notification_groups_subjects принадлежит_ группе уведомлений, я решил использовать комбинацию f.fields_for с f.select, чтобы попытаться воспроизвести c такое поведение. Это новый код, который у меня есть:

  = f.fields_for :notification_groups_subjects, @notification_group.notification_groups_subjects do |ff|
        - domains = @notification_group.notification_groups_subjects.map(&:domain_name)
        = ff.select :domain_name, domains, include_blank: true

Наличие такого кода дает представление, которое выглядит следующим образом:

enter image description here

Теперь у меня есть три выпадающих списка, когда мне действительно нужно одно, как первое изображение. Как я могу изменить свой код fields_for, чтобы он больше походил на первое изображение? Теперь легкий путь - просто перейти к select_tag коду, но я действительно хотел бы попытаться соответствовать form_for образу действий. Помощь будет оценена. Спасибо.

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