2010-11-08 4 views
2

Учитывая, что у меня есть список элементов в моей БД и их соответствующий перевод в файле 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 сортирует быстрее, чем рубин.

В противном случае я думаю, что вы могли бы сделать что-то вроде этого:

В контроллере используется рубин, чтобы построить массив строки или хэш:

@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 %> 
Смежные вопросы