Создайте гибкий, локализованный список значений Ruby-on-Rails - PullRequest
5 голосов
/ 09 марта 2010

У меня есть список значений (Beginner, Intermediate, Advanced, Fluent, Native), которые я хотел бы:

  • служить моделью для списка SELECT
  • actв качестве модели для преобразования идентификаторов в значения в таблице HTML
  • использование в нескольких контроллерах и представлениях
  • в порядке, который сохраняет бизнес-правила (упорядоченные по уровню квалификации)
  • локализуйте в какой-то момент в будущем

Есть ли способ реализовать этот список для удовлетворения всех или большинства моих потребностей?

1 Ответ

9 голосов
/ 09 марта 2010

Вы можете поместить определение массива в /config/locales/some_language.yml

например, вы можете иметь следующее в en.yml

en:
   experience_levels: 
          1: Beginner 
          2: Intermediate
          3: Advanced 
          4: Fluent
          4: Native

Чтобы получить пары ключ-значение в помощник, должно работать следующее:

def experience_levels 
    I18n.t(:experience_levels).map { |key, value| [ value, key ] } 
end

Чтобы использовать это в поле выбора, вы просто поместите в форму form_for

<%= f.select :experience_levels, experience_levels %>

Если вы используете вместо него form_tag, вам нужно следующее:

<%= select_tag :experience_levels, options_for_select(experience_levels) %>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...