Подтвердить что ты не робот

Сопоставьте опцию в форме выбора с булевыми значениями

У меня есть следующий фрагмент кода

%br
= f.label :active, 'Status'
= f.select :active, ['Active','Inactive']

Символ: active - булев тип var. Как я могу сопоставить Active = > 1/True и Inactive = > 0/False, для добавления базы данных.

Извините за вопрос новичков, но я не могу понять это.

4b9b3361

Ответ 1

Вы можете указать пару значений для каждого параметра: сначала будет использоваться как метка (внутренний текст тега <option>), второй будет использоваться как атрибут value:

= f.select :active, [['Active', true], ['Inactive', false]]

Он будет выглядеть примерно так:

<select name="model[active]">
  <option value="true">Active</option>
  <option value="false">Inactive</option>
</select>

Посмотрите на документы для select и options_for_select.

Ответ 2

Небольшое расширение более раннего ответа, если вы используете раскрывающийся список.

Мне нужно было использовать "options_for_select". Кроме того, ": selected" сохраняет значение в следующий раз, когда вы вернетесь в форму.

<%= f.select(:active, options_for_select([['Active', true], ['Inactive', false]], {:selected => @symbol.active}),:prompt => "Select") %>