Rails:在select表单助手中指定排序顺序

时间:2012-11-20 19:28:10

标签: ruby-on-rails sorting html-select form-helpers

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

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

1 个答案:

答案 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(因为它们是唯一的,而不是名字)要好得多,而且速度更快!