web-dev-qa-db-ja.com

選択フォームのオプションをブール値と一致させる

私は次のコードを持っています

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

記号:activeはブール型の変数です。データベースを追加するために、Active => 1/TrueとInactive => 0/Falseを一致させるにはどうすればよいですか。

初心者の質問で申し訳ありませんが、私はそれを理解することはできません。

19
vladCovaliov

オプションごとに値のペアを指定できます。最初はラベル(<option>タグの内部テキスト)として使用され、2番目は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 のドキュメントをご覧ください。

48
KL-7

ドロップダウンを使用している場合は、前の回答の小さな拡張。

「options_for_select」を使用する必要がありました。また、「:selected」は、次にフォームに戻ったときの値を格納します。

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