Ruby on rails 如何在ActiveAdmin中更改枚举标记
我正在使用活动管理插件gem为我的枚举创建漂亮的标记 在订单模型中,我有: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:
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)
它也应该可以工作。是否尝试编辑/转换表上的值或列的标题文本?标记的值