我的模型中包含的内容是:
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方法中设置我的值。
答案 0 :(得分:82)
呼叫:
I18n.t
而不是简单的t
。 t
是仅在视图中可用的辅助方法,将整个逻辑委派给I18n
模块。
更新:
正如评论中所提到的,视图帮助器不仅委托给I18n
模块,它还确保您也可以使用默认范围。
答案 1 :(得分:1)
# constants
def self.option_enum
[
[ I18n.t('enum.amount'), 'A' ],
[ I18n.t('enum.percentage'), 'P' ]
]
end