2010-05-20 39 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