如何让活动管理员显示“是”和“否”而不是“真”和“假”。
我试图改变英语语言环境,但这不起作用。我正在考虑猴子补丁布尔类,但这看起来很丑陋。
还有什么我可以做的吗?
如何让活动管理员显示“是”和“否”而不是“真”和“假”。
我试图改变英语语言环境,但这不起作用。我正在考虑猴子补丁布尔类,但这看起来很丑陋。
还有什么我可以做的吗?
你可能想做这样的事情:
index do
id_column
column(:published) do |story|
story.published? ? status_tag( "yes", :ok ) : status_tag( "no" )
end
end
这将在状态标签中包含“是”和“否”这两个词,看起来相当不错。
尝试直接在活动管理员中使用条件,如下所示
column :column_name do|object|
object.column_name? ? 'Yes' : 'No'
end
在这里,这行得通,它给你一个勾号和叉号,但似乎很容易修改。
https://gist.github.com/2574969
您需要重新启动 Rails 服务器才能使其正常工作,因为它会修改 active_admin.rb 初始化程序。
当然,它创建了一个类,这是您想要避免的,但是在没有其他任何东西的情况下,这确实有效。
它非常简单,
假设您的布尔字段名称处于活动状态,
创建一个名为 status 的方法,例如
def status
self.active ? "Yes" : "No"
end
将状态用作活动管理显示或索引中的普通字段。
正如艾哈迈德所说,您希望避免为此创建课程。
所以还有另一种解决方案:
在您的 active_admin.en.yml 语言环境(或其他)中,只需添加这两行:
en:
"true": Yes
"false": No
然后在您的 app/admin/my_model.rb 文件中,例如在索引页面上显示是/否,只需执行以下操作:
column :published do |post|
t(post.published.to_s)
end
因此,您只需将布尔值转为字符串并使用“t”函数(i18n 翻译),这样 Rails 就会在您的语言环境文件中搜索正确的翻译并将“真/假”替换为“是/否”。
我认为这是一个更好的解决方案,您遵循“Rails Spirit”,并且拥有不同语言的 active_admin 面板变得更加容易。
缺点(因为总是有一个)是每次你想用是/否替换布尔值时都需要使用“t”函数......
向 active_admin gem 发出拉取请求会很棒,只需像我一样通过更改 yml 文件来替换布尔值。
但是......直到它完成,我的解决方案工作正常。:)
我认为这也可以,无需任何猴子修补。
对于 Rails 5。
column :signed_up?, sortable: 'signed_up' do |interest|
ActiveRecord::Type::Boolean::FALSE_VALUES.exclude?(interest.signed_up)
end
对于 Rails 4。
column :signed_up?, sortable: 'signed_up' do |interest|
ActiveRecord::Type::Boolean::TRUE_VALUES.include?(interest.signed_up)
end
column :signed_up?, sortable: 'signed_up' do |interest|
ActiveRecord::Type::Boolean::FALSE_VALUES.exclude?(interest.signed_up)
end
如果额外的依赖项不打扰您,请查看https://github.com/parabuzzle/humanize_boolean,它会自动执行该功能并支持 i18n。