i18n与Enumerize gem

时间:2014-02-22 18:54:56

标签: ruby-on-rails ruby simple-form rails-i18n

我正在使用Enumerize gem https://github.com/brainspec/enumerize/ 它允许我使用siple形式的美丽选择。此选择中的所有选项都已翻译。

en:
  enumerize:
    user:
      sex:
        male: 'Man'
        female: 'Woman'

所以,在我的表格中,我选择了变体'男'和'女'。当我用'Man'值保存记录时,我会得到具有'male'值的性别属性。现在我想在显示页面上将此值显示为“Man”,但

= @user.sex

输出为“男性”而不是“男性”

3 个答案:

答案 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)。它还有许多其他有用的辅助方法