Ruby on rails 如何在ActiveAdmin中更改枚举标记

Ruby on rails 如何在ActiveAdmin中更改枚举标记,ruby-on-rails,activeadmin,Ruby On Rails,Activeadmin,我正在使用活动管理插件gem为我的枚举创建漂亮的标记 在订单模型中,我有: enum status: %i[pending not_started in_progress completed] tag_column(:status, class: :colored_status) 在ActiveAdmin模型中,我有: enum status: %i[pending not_started in_progress completed] tag_column(:status, class:

我正在使用活动管理插件gem为我的枚举创建漂亮的标记

在订单模型中,我有:

enum status: %i[pending not_started in_progress completed]
tag_column(:status, class: :colored_status)
在ActiveAdmin模型中,我有:

enum status: %i[pending not_started in_progress completed]
tag_column(:status, class: :colored_status)
但是,我找不到任何方法将状态转换为其他语言。我对这一点非常满意,解决方案甚至不需要涉及地区。我只想把标签改成别的东西

我想我可以执行以下操作来更改标记的文本,但现在样式消失了:

tag_column(:status, class: :status) do |delivery|
  I18n.t("activerecord.enums.delivery.statuses.#{delivery.status}")
end

这种方法也不是最好的,因为我必须在应用程序中的任何地方翻译它。

我知道这已经太晚了,但在这些情况下,我要做的是使用一个修饰程序来翻译枚举选项。因此,我的管理文件如下所示:

ActiveAdmin.register Car do
用CarDecorator装饰你
索引do
标记栏:人类状态
终止
终止
在decorator中,我将
人类状态定义如下:

class-CarDecorator
此外,在翻译的yml中(
es.yml
,在我的例子中),您需要将状态作为条目添加到
status
下:

es:
activerecord:
属性:
汽车:
状态:
批准:Aprobado
谢绝:雷查扎多
未决:未决
这样,该列使用新的
:human_status
,而不是翻译的
:status

您可以跳过decorator,直接在模型中实现该方法,但在我看来,decorator是一种可行的方法,因为否则模型将获得许多与表示相关的逻辑,而这些逻辑不属于那里


现在,关于颜色问题,在ActiveAdmin插件中,标记的列自动呈现为两个css类,
status\u tag
一个,每个值一个,作为
(例如
status\u tag approved
)。显示了一个示例,因此您可以自定义这些类别以获得所需的颜色。但是,对于
tag\u列(:human\u status,class::colored\u status)
它也应该可以工作。

是否尝试编辑/转换表上的值或列的标题文本?标记的值