collection_select
和select
Rails助手:我应该使用哪一个?
我无法在两种方式上看到差异。两个帮助程序都采用集合并在select标记内生成选项标记。是否存在collection_select
优于select
的情况?或者我在这里缺少什么?
答案 0 :(得分:70)
collection_select
旨在当项目列表是ActiveRecord对象数组时使用。 collection_select
建立在select
的顶部,因此当您需要显示对象集合而不是字符串数组时,它是一种方便的方法。
collection_select(:post, :author_id, Author.find(:all), :id, :name)
答案 1 :(得分:1)
我已经写了一段时间,回头看看 http://nasir.wordpress.com/2007/11/02/not-binding-your-selection-list-to-a-particular-model-in-rails/
希望有所帮助
答案 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>