LoginSignup
34
47

More than 5 years have passed since last update.

f.collection_selectについて

Last updated at Posted at 2019-05-03

題記について、Railsドキュメントを見てもあまり良く理解出来なかったので、まとめてみる。

Railsドキュメントより

  1. form_for, form_tagにて使用可
  2. 取ることができる引数について、Railsドキュメントによると、

(プロパティ名, オブジェクトの配列, value属性の項目, テキストの項目 [, オプション])

と記載されており、例では、

<%= f.collection_select(:name, @categories, :id, :name) %>

とコードを書くと、HTMLは、

<select id="page_name" name="page[name]">
  <option value="1">Railsの基礎知識</option>
  <option value="2">Rubyの基礎知識</option>
</select>

にて生成されるらしい。

参考:Railsドキュメント

もう少し詳しく

Railsドキュメントに挙げられている例をもう少し詳しく見てみる。

状況は?

  1. Pageモデル(テーブル)が存在する。
  2. Pagesテーブルは以下のような構成になっている。
id name
1 Railsの基礎知識
2 Rubyの基礎知識

3.

@categories = Page.all

としてすべてのオブジェクトをインスタンス変数に代入しているとする。

引数と生成されるHTMLページの関係性は?

  1. 第一引数(プロパティ名)は、selectタグのid属性とname属性に関係する。
    id="page_" name="page[]"といった具合に設定される。※今回の場合は:nameとしており、pageはモデル名となっている。
  2. 第二引数(オブジェクトの配列)は、何となく理解できるので省略
  3. 第三引数(value属性の項目)は、value=""にて設定したい値のカラム名が入る。そのため、idカラムの値を設定したい場合は、:idとなる。
  4. 第四引数(テキストの項目)は、optionタグ内のテキストに設定したい値のカラム名が入る。そのため、nameカラムの値を設定したい場合は、:nameとなる。
34
47
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
34
47