Сопоставьте опцию в форме выбора с булевыми значениями
У меня есть следующий фрагмент кода
%br
= f.label :active, 'Status'
= f.select :active, ['Active','Inactive']
Символ: active - булев тип var. Как я могу сопоставить Active = > 1/True и Inactive = > 0/False, для добавления базы данных.
Извините за вопрос новичков, но я не могу понять это.
Ответы
Ответ 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") %>