Замените 'collection_select,: множественный => true' с несколькими опциями 'check_box' в Rails - PullRequest
2 голосов
/ 29 ноября 2010

Как заменить collection_select (:multiple => true) списком параметров check_box, чтобы для каждого объекта в коллекции была опция check_box?

Существует ли элегантный способ реализовать это с помощью конструкторов форм (т.е. без использования *_tag помощников)? Я хотел бы максимально использовать встроенную функциональность ActiveRecord ...

Ответы [ 2 ]

1 голос
/ 29 ноября 2010

Я не думаю, что есть встроенный "элегантный" способ сделать это.

Этот Railscast должен помочь вам, хотя:

0 голосов
/ 23 мая 2013

Вы можете сделать это так (например, используя HAML).

%fieldset
  Colors I like
  - %w[red blue].each do |color|
    = f.label color 
    = f.check_box :colors_liked, {multiple: true}, color, nil

Опция nil в конце не позволяет Rails создать скрытый флажок с тем же именем со значением 0, что вам определенно не нужно, если вы собираетесь использовать множественный выбор.

Это производит:

<label for="colors_liked_red">Red</label>
<input id="my_form_colors_liked_red" \
  name="my_form[colors_liked][]" type="checkbox" value="red">

<label for="colors_liked_blue">Blue</label>
<input id="my_form_colors_liked_blue" \
  name="my_form[colors_liked][]" type="checkbox" value="blue">

Когда форма отправлена, параметры будут содержать массив значений отмеченных опций.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...