Как обрабатывать несколько выбранных значений в флажке в Rails - PullRequest
0 голосов
/ 18 октября 2019

Я новичок в рельсах. У меня есть модель с именем Fixture, где у меня есть атрибут day. Я хочу, чтобы атрибут day сохранял несколько значений в массиве, таких как день = ["Понедельник", "Вторник", "Среда"]. Для этого я использовал form_with и у меня есть флажок с несколькими вариантами, такими как воскресенье, понедельник, вторник. Вот как выглядит мой form_with.

.field
    = f.check_box :day
    = f.label :day, "Sunday"
    = f.check_box :day
    = f.label :day, "Monday"
    = f.check_box :day
    = f.label :day, "Tuesday"
    = f.check_box :day`

Может кто-нибудь сказать мне, как лучше всего подойти к этой проблеме, и сохранить несколько значений в атрибуте day. Или есть какой-то другой легкий путь. Заранее спасибо !!!

1 Ответ

0 голосов
/ 18 октября 2019

только с одним выбранным днем:

Рассмотрим варианты select helper или для выбора select helper .

Вот быстрый взломэто поможет вам начать:

 <%= f.select(:day, ["Monday", "Tuesday"], :prompt => 'Select') %>

Я бы не использовал флажки для такого рода вещей. Вы должны быть в состоянии использовать вышеизложенное и преобразовать его в синтаксис на основе хамла. Надеюсь, это поможет.

Также обратите внимание, что атрибутом дня должна быть строка. Я предполагаю, что вы хотите выбрать только один конкретный день недели.

с выбранными несколькими днями

Быстрый и грязный с логическим:

Быстрый и грязный подход будетпросто добавить логическое поле для каждого дня недели:

rails g migration AddDaysToFixtures monday:boolean tuesday:boolean wednesday:boolean thursday:boolean friday:boolean saturday:boolean sunday:boolean

.field
    = f.check_box :sunday
    = f.label :day, "Sunday"
    = f.check_box :monday
    = f.label :day, "Monday"
    = f.check_box :tuesday
    = f.label :day, "Tuesday"

и т. д.

Имеет много через:

Другим вариантом может быть добавление таблицы соединений. Использование a имеет много сквозных отношений .

f.select - выбор нескольких

f.select имеет возможность выбрать несколько результатов. Вы должны будете обработать это соответствующим образом в вашем контроллере.

...