#ruby-on-rails
Вопрос:
В моей форме у меня есть :option_ids
, которая передает список идентификаторов обратно в модель для создания ассоциаций с применимыми параметрами. В моем случае существуют группы опций, позволяющие пользователю выбирать любую комбинацию опций.
В настоящее время у меня есть это в моей форме:
- @option_groups.each do |group|
- unless group.options.blank?
.form
h3 = group.name
.checkboxes
= line_item.collection_check_boxes :option_ids, group.options, :id, :name_and_price do |option|
.checkbox.horizontal
= option.check_box(class: "check")
= image_tag option.object.photo.variant(resize: "65x65") if option.object.photo.attached?
= option.label
Недавно мы добавили условие в модель OptionGroup, позволяющее пользователям определять, можно ли выбрать несколько параметров из этой группы опций(флажки) или только один(переключатели).
Мне интересно, есть ли способ, которым я все еще могу заполнить параметр :option_ids, используя комбинацию флажков и переключателей. Я пробовал следующее, но это портит хэш параметров
-@option_groups.each do |group|
- unless group.options.blank?
.form
h3 = group.name
- if group.multiple?
.checkboxes
= line_item.collection_check_boxes :option_ids, group.options, :id, :name_and_price do |option|
.checkbox.horizontal
= option.check_box
= image_tag option.object.photo.variant(resize: "65x65") if option.object.photo.attached?
= option.label
- else
span Please select one
.checkboxes
= line_item.collection_radio_buttons :option_ids, group.options, :id, :name_and_price do |option|
.checkbox.horizontal
= option.radio_button
= image_tag option.object.photo.variant(resize: "65x65") if option.object.photo.attached?
= option.label
Кто — нибудь сталкивался с подобным сценарием раньше? Как бы кто-то условно навязал эксклюзивность, не испортив при этом другие идентификаторы в атрибуте формы?
Комментарии:
1. Проблема фреймворка: в первую очередь не имеет смысла использовать
option_ids
, если может быть только одно значение. Кроме того, вы, вероятно, должны использоватьfields_for
для определения области входных данных, но это действительно не имеет никакого отношения к вашей ситуации с флажком и радиосвязью.2. да, я пошел дальше и переключился на использование
collection_check_boxes
и использование JS только для выборочного обеспечения эксклюзивности. Я пока оставляю это, потому что у кого-то может быть хорошее решение, которое будет ценным для сообщества.