2

我正在使用 Railsselect()表单助手来生成<select>结构。以下行有效,但会导致未排序的列表。如何将排序顺序更改为字母升序?

<%= select('category', 'name', Category.all.collect { |category| [ category.name ] }) %>
4

1 回答 1

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(因为它们是唯一的,不像名称)而且它更快!

于 2012-11-20T19:44:40.857 回答