#ruby-on-rails #simple-form
#рубин на рельсах #простая форма
Вопрос:
Я использую простую форму для своего приложения и хотел бы предоставить пользователям возможность выбирать несколько элементов и отображать их в своем профиле в виде списка.
Строка в моей форме выглядит так:
lt;%= f.input :subject, as: :check_boxes, collection: [ "Math", "English", "Science"] %gt;
Вот как я показываю это на лицевой стороне:
lt;%= @tutor.subject %gt;
Если бы кто-то нажал «Математика и наука», я бы хотел, чтобы появилось что-то подобное: «Математика, наука».
У меня возникли проблемы с этим, так как кажется, что он не распознает выбранные флажки. Как бы я построил это шаг за шагом?
Ответ №1:
Разумное решение проблемы состоит в том, чтобы использовать две таблицы вместо одной строки — одну для предметов и объединенную таблицу между предметами и преподавателями. Это отделяет данные от кода вашего приложения.
class Subject has_many :tutors has_many :subjects, through: :tutor_subjects validates_uniqueness_of :name end class TutorSubject belongs_to :tutor belongs_to :subject end class Tutor has_many :tutor_subjects has_many :subjects, through: :tutor_subjects end
Затем вы бы назначили преподавателя и предметы с:
lt;%= f.association :subjects, label_method: :name, as: :checkboxes, collection: Subject.all %gt;