【rails】フォームでの選択ボックスの作り方(f.selectとf.collection_select)

おはようございます。
今日はform_forやform_withといっしょに使われるf.selectとf.collection_selectの使い方について簡単にまとめていこうと思います。
これらはフォームをクリックした際に選択して入力することができる選択ボックスが作れてすごく便利ですが、書き方を忘れていたため、備忘録として書いていきます。

f.select

データベースから情報を取得せずに選択ボックスを作成する際に使用します。

使い方

合計5つの引数をとります。

f.select (オブジェクト), プロパティ, 要素情報, オプション, 要素属性


第一引数であるオブジェクトはform_forの場合、先に書いているので省略します。
第二引数であるプロパティはデータベースに保存するモデルのカラム名を書きます。
第三引数である要素情報は選択したい情報を配列またはハッシュ形式で書きます。

# 配列
[[ 選択肢の表示名1, 実際に送信されるデータ1 ], [ 選択肢の表示名1, 実際に送信されるデータ2 ]]
# ハッシュ
{ "選択肢の表示名1" => "実際に送信されるデータ1", "選択肢の表示名1" => "実際に送信されるデータ2" }


第四引数と第五引数は省略可能で、必要に応じてオプションや要素属性を決めれます。


Ex.

f.select :name, [ [ "山田", 1 ], [ "佐々木", 2 ] ], { include_blank: "選択してください"}, class: "name"

f.collection_select

データベースから情報を取得して選択ボックスを作成する際に使用

使い方

合計7つの引数をとります。

f.collection_sellect (オブジェクト), プロパティ, オブジェクトの配列, value, text, オプション, 要素属性


第一引数と第二引数はf.selectと同様です。
第三引数では選択するオブジェクトの配列を記載します。
第四引数では実際にDBに送られる値を記載します。多くの場合、idが書かれます。
第五引数では選択ボックスに表示したい値のカラムを記載します。
第六、七引数は省略可能で、必要に応じてオプションや要素属性を決めれます。


Ex.

f.collection_select :image, @events, :id, :event_name, prompt: "イベントを選択してください"


以上になります。使い分けのポイントはデータベースから情報を引っ張るか否かというだけです。引数に何を入れたらいいかがわかれば簡単に使えると思います。
ここまで読んでくださり、ありがとうございました。分かりにくいやアドバイス等ありましたらコメントくださると幸いです。では!