Простая форма - несколько атрибутов в группе флажков - PullRequest
0 голосов
/ 03 сентября 2018

У меня есть User Модель со следующими атрибутами:

#  full_time                :boolean
#  part_time                :boolean
#  contract                 :boolean

Я хотел бы создать группу флажков простой формы для этих атрибутов. Из того, что я смог понять, простая форма api предназначена для сопоставления с has_many и has_and_belongs_to_many ассоциациями следующим образом:

f.collection_check_boxes :role_ids, Role.all, :id, :name

Есть ли способ обработать обновление нескольких атрибутов для данной модели в соответствии с рекомендациями API формы? Или это показатель того, что я должен моделировать данные другим способом?

1 Ответ

0 голосов
/ 03 сентября 2018

f.collection_check_boxes - это общий метод создания нескольких флажков с произвольным именем / значением для атрибута single . Пример, который вы дали, упоминается в документации как последний для этого метода, вероятно, потому что f.association намного лучше для атрибутов ассоциации.

<%= f.association :role, Role.all %>

В случае ваших атрибутов, я не думаю, что f.collection_check_boxes применимо. Если атрибуты не являются взаимоисключающими, то я не вижу в этом ничего плохого - придерживайтесь их и просто установите для каждого из них свой флажок.

<%= f.input :full_time %>
<%= f.input :part_time %>
<%= f.input :contract %>

simple_form определит их тип и сгенерирует флажок для каждого. Используйте опцию wrapper: false, если вы хотите избавиться от div-пакетов-оберток и сгруппировать их более плотно.

Если бы они были взаимоисключающими, то, вероятно, лучше было бы использовать целочисленный столбец и enum.

...