我正在使用Rails select()
表单助手生成<select>
结构。以下行有效,但会生成未排序的列表。如何将排序顺序更改为按字母顺序升序?
<%= select('category', 'name', Category.all.collect { |category| [ category.name ] }) %>
答案 0 :(得分:4)
你应该使用Rails 3方式:
<%= select('category', 'id',
Category.order('name ASC').all.map{ |c| [c.name, c.id] }) %>
这将为每个类别生成HTML选项,如下所示:
<option value="1">CategoryName</option>
如果值是类别ID而不是其名称:
您将获得params[:category_id]
而不是params[:category]
,这将是包含类别名称的字符串。然后要在数据库中找到一个类别,使用一个id(因为它们是唯一的,而不是名字)要好得多,而且速度更快!