2010-11-08 3 views
2

Étant donné que j'ai une liste d'éléments dans ma base de données et leur traduction respective dans le fichier i18n.Liste de tri basée sur leur traduction i18n

i18n:

basic_categories: 
    item_1: Z 
    item_2: A 
    item_3: F 

sur la vue:

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

Comment puis-je trier cette liste pour chaque langue?

Répondre

0

Vous pouvez avoir la traduction dans votre base de données si votre liste est trop longue, pour des raisons de performance. MySQL sort plus vite que ruby.

Sinon, je pense que vous pourriez faire quelque chose comme ceci:

Dans votre contrôleur, utilisez Ruby pour construire un tableau de chaînes ou de hachage:

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

Et tri avec rubis, voir http://ruby-doc.org/core/classes/Enumerable.html

Dans votre vue simplement:

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