it-swarm-ja.tech

rails collection_select vs. select

collection_selectおよびselect Railsヘルパー:どちらを使用すればよいですか?

どちらの方法でも違いはわかりません。両方のヘルパーがコレクションを取得し、selectタグ内にオプションタグを生成します。 collection_selectselectよりも優れているシナリオはありますか?または私がここで欠けているものはありますか?

38
webnuwan

collection_selectは、アイテムのリストがActiveRecordオブジェクトの配列である場合に使用することを目的としています。 collection_selectselectの上に構築されているため、文字列の配列ではなくオブジェクトのコレクションを表示する必要がある場合に便利な方法です。

collection_select(:post, :author_id, Author.find(:all), :id, :name)
74
Simone Carletti

そして、selectに関しては、ハッシュで使用できます。以前はENUMで使用していました。

# In a hypothetical Fruit model
enum types: { 'Banana' => 0, 'Grape' => 1, 'Mango' => 2 }

# In the view
f.select :type, Fruits.types.invert

オプションに正しい値を表示するには、invertを使用する必要があることに注意してください。

<select>
  <option value="0">Banana</option>
  <option value="1">Grape<option>
  <option value="2">Mango</option>
</select>

ショーファイルでそれを参照するには、Fruit.typesを使用できます。これにより、以前のハッシュが返されます。このようにして、次のことができます。

 Fruit.types[obj.type]

最後の注意:enum types: { 'Banana' => :banana, ...が必要な場合は、数字の代わりに記号を使用でき、<option value="banana">Banana</option>を取得します。

1
Seralto

私はしばらく前に何かを書いたので、見てください http://nasir.wordpress.com/2007/11/02/not-binding-your-selection-list-to-a-particular- model-in-Rails /

お役に立てば幸いです

1
nas