2011-06-28 45 views
1

這應該是一個簡單的查找,但我似乎無法在文檔中的任何地方找到它。如何訂購我的collection_select表單字段中的項目?

截至目前,在select中呈現的所有內容都是按id排序的,但是我希望它能夠呈現字母列表(使其更具人性化可掃描性)。

的代碼我目前使用生成的選擇:

<%= f.collection_select :item_id, Item.all, :id, :name %> 

噶點,可以申請(不只是按字母順序:名稱)項目的任何屬性的通用答案。

目前使用Rails 3.0.5 v

回答

0

您可以在模型像其他答案設置默認順序操作如下:

has_many :items, :order => "some_col DESC" 

或者,如果你需要從默認順序偏離,也可以將其設置在控制器和訪問視圖:

controller.rb

def index 
    @items = Item.all(:order => 'some_col DESC') 
end 

index.erb

<%= f.collection_select:ITEM_ID,@items,:ID,:名稱%>


另一種選擇是你可以做你的模型訂貨內一個名爲範圍:

item.rb的

named_scope :alphabetically, :order => "some_col DESC" 

index.erb

<%= f.collection_select :item_id, Item.alphabetically, :id, :name %> 
0

有可能能夠幫助,雖然我還沒有嘗試另一個問題here。如果您嘗試基於這個例子中(從以前的網站),形式有希望的排序會爲你工作:

class Log < ActiveRecord::Base 
    has_many :items, :order => "some_col DESC" 
end