【问题标题】:i18n with Enumerize gemi18n 与 Enumerize gem
【发布时间】:2014-02-22 18:54:56
【问题描述】:

我正在使用 Enumerize gem https://github.com/brainspec/enumerize/ 它允许我以简单的形式使用漂亮的选择。并且此选择中的所有选项都已翻译。

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

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

= @user.sex

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

【问题讨论】:

  • 对不起,我不明白你的问题。
  • @phoet 看看更新的问题

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


【解决方案1】:

我可能会使用 .text 方法(您可以通过使用 bundle open enumerize 并稍微遍历代码在 Gem 中看到它)

= @user.sex.text

你也可以使用完整的翻译键

= t("activerecord.enumerize.user.sex.#{@user.sex}")

【讨论】:

  • 谢谢!这就是我想要的
【解决方案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)

【讨论】:

  • 是的,这是在表单中。但我想在我的显示页面上打印“男性”或“女性”,而不是表格
【解决方案3】:

我建议尝试处理它的 t_t gem(在 Cheatsheet 中使用 #enums section)。它还有很多其他有用的辅助方法

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-12-26
    • 2011-02-27
    • 1970-01-01
    • 2019-01-28
    • 1970-01-01
    • 2016-03-07
    • 2011-03-01
    • 1970-01-01
    相关资源
    最近更新 更多