Ruby on rails 如何在Rails 6.0中转换ActiveModel属性值

Ruby on rails 如何在Rails 6.0中转换ActiveModel属性值,ruby-on-rails,internationalization,Ruby On Rails,Internationalization,我有一个包含10种不同状态的状态表。列是id和name 当我在视图中显示“name”属性时(尤其是作为嵌套属性),我似乎不知道如何转换该值 例如: <%= t'@tank.status.name' %> 但它似乎无法访问这两个条目 如何转换嵌套属性值 编辑 这种草率的方法是可行的,但它似乎……只是错了 class Status < ApplicationRecord def name case id when 1 I18n.t('new') when 2

我有一个包含10种不同状态的状态表。列是id和name

当我在视图中显示“name”属性时(尤其是作为嵌套属性),我似乎不知道如何转换该值

例如:

<%= t'@tank.status.name' %>
但它似乎无法访问这两个条目

如何转换嵌套属性值

编辑

这种草率的方法是可行的,但它似乎……只是错了

class Status < ApplicationRecord
def name
  case id
  when 1
    I18n.t('new')
  when 2
    ..
  end
end
类状态

有没有更干净的方法?这段代码让我想洗个澡。

缩进在YML文件中很重要,您可以尝试以下方法:

activerecord:
模型:
地位:
第一个:“身材”
其他:“身高”
属性:
状态/名称:
新的:“新潮”
然后
Status.human\u attribute\u name('name.new')
将重新命名为“Nouveau”


查看Rails指南的详细信息-

缩进在YML文件中很重要,您可以尝试以下方法:

activerecord:
模型:
地位:
第一个:“身材”
其他:“身高”
属性:
状态/名称:
新的:“新潮”
然后
Status.human\u attribute\u name('name.new')
将重新命名为“Nouveau”


查看Rails指南的详细信息-

我必须知道status.name的值吗?因为当我在视图中显示时,我不知道状态是什么,它是由用户动态修改的。@JeffO是的,i18n就是这样工作的。创建一些状态,然后让用户从中进行选择,这样您就可以添加那些i18n了。我想显示以前某个操作设置的记录的状态。用户没有通过选择输入设置状态。好的,然后您需要将i18n配置为所有可能的操作,例如:新建、编辑、删除…但是在视图中,我如何访问转换后的值而不知道它将是什么?我必须知道status.name的值吗?因为当我在视图中显示时,我不知道状态是什么,它是由用户动态修改的。@JeffO是的,i18n就是这样工作的。创建一些状态,然后让用户从中进行选择,这样您就可以添加那些i18n了。我想显示以前某个操作设置的记录的状态。用户没有通过选择输入设置状态。好的,那么您需要将i18n配置为所有可能的操作,例如:新建、编辑、删除……但是在视图中,如何在不知道转换值是什么的情况下访问该转换值?
class Status < ApplicationRecord
def name
  case id
  when 1
    I18n.t('new')
  when 2
    ..
  end
end