2012-11-20 42 views
2

我正在使用Rails select()表單助手來生成<select>結構。以下行可用,但會導致未排序的列表。我如何將排序順序改爲按字母升序排列?Rails:在選擇表單助手中指定排序順序

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

回答

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好多了(因爲它們是唯一的,不像名稱),而且速度更快!