Я рефакторинг некоторых 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." }
И вот как это выглядит для представления
Я рефакторинг кода, пытаюсь сделать его чище и поскольку 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
Наличие такого кода дает представление, которое выглядит следующим образом:
Теперь у меня есть три выпадающих списка, когда мне действительно нужно одно, как первое изображение. Как я могу изменить свой код fields_for
, чтобы он больше походил на первое изображение? Теперь легкий путь - просто перейти к select_tag
коду, но я действительно хотел бы попытаться соответствовать form_for
образу действий. Помощь будет оценена. Спасибо.