rails collection_select与select

时间:2009-11-13 11:13:04

标签: ruby-on-rails ruby

collection_selectselect Rails助手:我应该使用哪一个?

我无法在两种方式上看到差异。两个帮助程序都采用集合并在select标记内生成选项标记。是否存在collection_select优于select的情况?或者我在这里缺少什么?

3 个答案:

答案 0 :(得分:70)

collection_select旨在当项目列表是ActiveRecord对象数组时使用。 collection_select建立在select的顶部,因此当您需要显示对象集合而不是字符串数组时,它是一种方便的方法。

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

答案 1 :(得分:1)

答案 2 :(得分:1)

关于select,您可以将其与哈希一起使用。我曾经和ENUM一起使用。

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

# In the view
f.select :type, Fruits.types.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>