我的模型中有:

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方法中设置值.

推荐答案

电话:

I18n.t 

而不是简单的t.t是仅在视图中可用的辅助方法,将整个逻辑委托给I18n模块.

更新:

正如在 comments 中提到的,view helper不仅授权给I18n模块,还确保您可以使用默认的作用域.

Ruby-on-rails相关问答推荐

方法和括号之间没有空格时出错

错误AESGCMOpen获取密码:消息身份验证失败:Golang解密GCM

关于关联 has_many 的多级/三重嵌套形式

使用嵌套属性时如何自动将父 ID 分配为外键?

Gem::Ext::BuildError:ERROR:无法在macOS Monterey上构建Gem本机扩展

设计 token_authenticable 已弃用,有什么替代方案?

Factory Girl + Mongoid 在fixture 中嵌入文档

Rails:如何访问 RESTful 助手?

如何配置设计以使用自定义邮箱布局?

Rails: WickedPDF: 分页符

使用devise gem点击确认链接后避免登录?

Rails(或 Ruby):Yes/No 而不是 True/False

Rails 服务对象与 lib 类

具有 has_many 关联的 FactoryGirl build_stubbed 策略

在 Ruby on Rails 中循环对象属性

过滤器在渲染之前但在控制器之后执行?

如何在 Rails 3 中将多个属性传递给 find_or_create_by?

Rails:一次添加多个 flash[:notice] 的简单方法

Rails:弃用警告:您没有设置 config.secret_key_base

将现有的 html.erb 转换为 Haml