Подтвердить что ты не робот

Доступ к файлу перевода (i18n) из внутренней модели рельсов

Что я имею в своей модели:

def body_color_enum
  [
    ['Aqua', '#009c9c'],
    ['Grey', '#6d6e71'],
    ['Yellow', '#ffe600'],
    ['White', 'white']
  ]
end

Я хочу, чтобы эти значения поступали из файла перевода 'en.yml'

en:
  group:
    hero:
      hex1: '#6d6e71'
      name1: 'Dark grey'
      hex2: '#ccc'
      name2: 'Light grey'
      hex3: '#0099ce'
      name3: 'Blue'
      hex4: '#ffffff'
      name4: 'White'

Я пробовал это:

def body_color_enum
  [
    [t('group.hero.name1'), '#009c9c'],
    ['Grey', '#6d6e71'],
    ['Yellow', '#ffe600'],
    ['White', 'white']
  ]
end

Но я получаю эту ошибку:

undefined method `t' for #<Group:0x007fabad847ac8>

Так что я спрашиваю, как я могу получить доступ к моему локальному файлу из модели, чтобы я мог установить мои значения в методе body_color_enum.

4b9b3361

Ответ 1

Вызов:

I18n.t 

вместо простого t. t - вспомогательный метод, доступный только в представлениях, делегирующий всю логику модулю I18n.

UPDATE:

Как упоминалось в комментариях, помощник представления не только делегирует модуль I18n, он также позволяет использовать области по умолчанию.

Ответ 2

# constants
def self.option_enum
    [ 
      [ I18n.t('enum.amount'), 'A' ], 
      [ I18n.t('enum.percentage'), 'P' ] 
    ]
end