我正在使用Enumerize gem https://github.com/brainspec/enumerize/ 它允许我使用siple形式的美丽选择。此选择中的所有选项都已翻译。
en:
enumerize:
user:
sex:
male: 'Man'
female: 'Woman'
所以,在我的表格中,我选择了变体'男'和'女'。当我用'Man'值保存记录时,我会得到具有'male'值的性别属性。现在我想在显示页面上将此值显示为“Man”,但
= @user.sex
输出为“男性”而不是“男性”
答案 0 :(得分:11)
我可能会使用.text
方法(您可以使用bundle open enumerize
在Gem中看到它并稍微遍历代码)
= @user.sex.text
您也可以使用完整的翻译密钥
= t("activerecord.enumerize.user.sex.#{@user.sex}")
答案 1 :(得分:2)
如果您将可选值放在yaml文件中,例如
simple_form:
options:
user:
gender:
male: Male
female: Female
简单的表格将为您挑选。无需在您的视图中进行任何明确的翻译
有关详细信息,请参阅https://github.com/plataformatec/simple_form#i18n!
要在其他视图中使用相同级别的“自动化”,您可以创建一个简单的帮助方法来为您进行翻译
def translate(record, attr)
model = record.class.name.underscore
value = record.send(attr)
I18n.t("simple_form.options.#{model}.#{attr}.#{value}")
end
你可以称之为
= translate(@user, :sex)
答案 2 :(得分:0)
我建议尝试处理它的t_t gem(Cheatsheet中为#enums section)。它还有许多其他有用的辅助方法