2010-11-08 58 views
2

鉴于我有一个项目列表中的我的DB和他们各自的翻译在i18n文件。根据他们的i18n翻译排序列表

的i18n文件:

basic_categories: 
    item_1: Z 
    item_2: A 
    item_3: F 

的观点:

 <% @basic_categories.each do |category| %> 
     <%= t("basic_categories.#{category.name}") %> 
     <% end %> 

我怎么能对这个文件列表的每种语言?

回答

0

出于性能原因,如果列表太长,您可能希望在数据库中进行翻译。 MySQL排序比ruby快。

否则,我认为你可以做这样的事情:

在您的控制器,使用Ruby构建字符串或散列的数组:红宝石

@basic_categories = categories.collect { |category| 
    { :name => I18n.t("basic_categories.#{category.name}"), ... } 
}.sort_by { |category| category[:name] } 

和排序它,看到http://ruby-doc.org/core/classes/Enumerable.html

在你看来只是:

<% @basic_categories.each do |category| %> 
    <%= category[:name] %> 
    ... 
<% end %>