題記について、Railsドキュメントを見てもあまり良く理解出来なかったので、まとめてみる。
Railsドキュメントより
- form_for, form_tagにて使用可
- 取ることができる引数について、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ドキュメントに挙げられている例をもう少し詳しく見てみる。
状況は?
- Pageモデル(テーブル)が存在する。
- Pagesテーブルは以下のような構成になっている。
id | name |
---|---|
1 | Railsの基礎知識 |
2 | Rubyの基礎知識 |
3.
@categories = Page.all
としてすべてのオブジェクトをインスタンス変数に代入しているとする。
引数と生成されるHTMLページの関係性は?
- 第一引数(プロパティ名)は、selectタグのid属性とname属性に関係する。
id="page_〜" name="page[〜]"といった具合に設定される。※今回の場合は:nameとしており、pageはモデル名となっている。 - 第二引数(オブジェクトの配列)は、何となく理解できるので省略
- 第三引数(value属性の項目)は、value="〜"にて設定したい値のカラム名が入る。そのため、idカラムの値を設定したい場合は、:idとなる。
- 第四引数(テキストの項目)は、optionタグ内のテキストに設定したい値のカラム名が入る。そのため、nameカラムの値を設定したい場合は、:nameとなる。