我正在使用 Railsselect()
表单助手来生成<select>
结构。以下行有效,但会导致未排序的列表。如何将排序顺序更改为字母升序?
<%= select('category', 'name', Category.all.collect { |category| [ category.name ] }) %>
我正在使用 Railsselect()
表单助手来生成<select>
结构。以下行有效,但会导致未排序的列表。如何将排序顺序更改为字母升序?
<%= select('category', 'name', Category.all.collect { |category| [ category.name ] }) %>
您应该使用 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(因为它们是唯一的,不像名称)而且它更快!