I18n выпадающий выбор в рельсах 3, интернационализация и получение значения идентификатора внутри значения = "" - PullRequest
2 голосов
/ 06 октября 2011

Я пытаюсь иметь возможность интернационализировать строки из массива, чтобы заполнить раскрывающееся поле формы выбора. Ниже я разместил код из поста Google в блоге (ссылка с кредитами включена)

То, что я хотел бы сделать, это

  • имеют значение = "1", поэтому внутри значения вместо текста присутствует целое число (при текущей опции текст также вставляется в значение
  • Я хочу это, потому что у меня есть таблица профиля с такими столбцами, как образование: целое число. Я в замешательстве, если это лучший способ сохранения данных, но подумал, что это так, поскольку одно целое число занимает меньше места в БД
  • Есть комментарии к приведенному ниже коду и решению? Есть ли лучший способ сделать это?

У меня есть список стран, который я вставил в свою БД, например DataCountrys , но это нелегко перевести, и я думаю, что должен следовать описанному ниже коду, чтобы сделать его более понятным и переводимым, таким образом, удаляя базу данных. таблица для каждого небольшого списка (раскрывающиеся значения), который есть в моем приложении.

Надеюсь, кто-то может прояснить выше спасибо в Advanche!

Я следовал советам в этом сообщении в группах Google:

https://groups.google.com/forum/#!topic/rails-i18n/mHs7Z_PO6xw

en:
  job_categories:
    undergraduate: Undergraduate student
    graduate: Graduate student
    predoctoral: Pre-doctoral student
    postdoctoral: Postdoctoral student
    associate_prof: Asociate professor
    assistent_prof: Assistant professor
    research_prof: Research professor
    technician: Technician

А в вашей модели:

класс Job

  def translated_job_category
    I18n.t(job_category, :scope => :job_categories)
  end

конец

В вашем помощнике:

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

А по вашему мнению:

<%= f.select :job_category, job_categories %>

Вспомогательный метод создает массив, который понимает select-helper. Сохраняет сокращенные ключи («бакалавриат», «выпускник» и т. Д.) В базы данных, как своего рода перечислимые. Будьте уверены, чтобы сохранить те же на всех языках.

Когда вы хотите показать, к какой категории работы относится объект, вы можете сделать @ job.translated_job_category для возврата переведенного значения.

...