2010-05-20 66 views
1

我在一個視圖中的下列行:如何對i18n翻譯的列上的activerecord結果集進行排序?

<%= f.select(:province_id, options_from_collection_for_select(Province.find(:all, :conditions => { :country_id => @property.country_id }, :order => "provinces.name ASC"), :id, :name) %> 

在省模型我有以下:

def name 
    I18n.t(super) 
    end 

問題是:名稱字段被轉換(通過省模型)和該訂單是通過英文名稱上的activerecord完成的。非英文結果集可能會錯誤地按這種方式排序。我們在比利時有一個名爲'Oost-Vlaanderen'的省份。在英語中是「東佛蘭德」排序:)

我需要這樣的事情並不好,但它不工作:?

<%= f.select(:province_id, options_from_collection_for_select(Province.find(:all, :conditions => { :country_id => @property.country_id }, :order => "provinces.I18n.t(name) ASC"), :id, :name) %> 

什麼是解決這個最好的辦法 。正如你可能已經注意到,我的編碼知識是非常有限的,對不起爲

回答

1

您需要的條目排序,他們已經從數據庫加載後,這也許應該做的伎倆:

Provinces.find(:all, :conditions => {:country_id => @property.country_id}).sort_by{|p| p.name} 
+0

是的,這是做的伎倆,謝謝! – 2010-05-20 22:25:24