rails collection_select与select
collection_select
并select
Rails助手:我应该使用哪一个?
两种方式我都看不出来。 这两个助手都采用一个集合,并在select标签中生成选项标签。 有一种情况下, collection_select
比select
更好吗? 还是我在这里失踪的东西?
当项目列表是一个ActiveRecord对象数组时,将使用collection_select
。 collection_select
构build在select
的顶部,所以当你需要显示一个对象集合而不是一个string数组的时候,这是一个方便的方法。
collection_select(:post, :author_id, Author.find(:all), :id, :name)
我已经写了一些东西,看看http://nasir.wordpress.com/2007/11/02/not-binding-your-selection-list-to-a-particular-model-in-导轨/
希望有所帮助
而关于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>
要在show文件中引用它,你可以使用Fruit.types
,这将返回我们以前的Hash。 这样你可以做到:
Fruit.types[obj.type]
最后一点:如果你喜欢enum types: { 'Banana' => :banana, ...
你可以用符号代替数字enum types: { 'Banana' => :banana, ...
你会得到<option value="banana">Banana</option>