railsにて、複数の中から1つ選ぶときに用いるセレクトボックスを実装する方法のメモです。
セレクトボックス


上記の画像のようなものです。例は都道府県を選択するセレクトボックス。
f.collection_selectを用いる
railsで実現するには、collection_selectを用います。
ドキュメント:https://railsdoc.com/page/collection_select
説明:
<%= form.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name %>
引数リスト:
1 | メソッド名 | 何のkeyで渡されるか。フォームをsubmitすると {“prefecture_code” => “2”} などとパラメータが渡され、params[:prefecture_code]で選んだ都道府県コードを取得できる。 |
2 | オブジェクトの配列 | 選択肢一覧を指定する。ここでは<JpPrefecture::Prefecture:0x00005650bff26f78 @code=32, @name=”島根県”>, …などというような配列。 |
3 | value属性の項目 | params[:prefecture_code]のvalueとして何を指定するか。ここではcodeのため、”島根県”を選択するとparams[:prefecture_code] => 32となる。 |
4 | テキストの項目 | 何が選択肢として表示されるか。ここでは都道府県名・ |
5 | その他 | 後述 |
まとめると、f.collection_select(メソッド名, オブジェクトの配列, value属性の項目, テキストの項目, [その他])になります。
その他の引数
その他の引数を紹介します。
オプション
選択肢に関する細かい設定を追加できます。
例えば、
・選択されていない場合、セレクトボックスになんと表示するか指定する
<%= form.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name , {prompt: "選ぶ"}%>
最後の引数を追加しました。すると、何も選択していない場合のようになります。
・デフォルトで選択しておくものを指定
<%= form.collection_select :prefecture_code, JpPrefecture::Prefecture.all, :code, :name , selected: 19 %>
オプション引数としてselectedを追加し、デフォルトにしたいvalueを指定します。

すると上のように、はじめから山梨県が選択されているのがわかります。(山梨県のコードは19)
コメント