如何让主动管理员显示“是”和“否”而不是“真”和“假”。
我尝试更改英语语言环境,但这不起作用。 我正在考虑monkeypatching布尔类,但这看起来很难看。
我还能做些什么吗?
答案 0 :(得分:52)
您可能喜欢这样做:
index do
id_column
column(:published) do |story|
story.published? ? status_tag( "yes", :ok ) : status_tag( "no" )
end
end
这将在状态标签中包含“是”和“否”字样,看起来相当不错。
答案 1 :(得分:15)
尝试直接在活动管理中使用条件,如下所示
column :column_name do|object|
object.column_name? ? 'Yes' : 'No'
end
答案 2 :(得分:9)
在这里,这有效,它会给你一个勾选和交叉,但似乎很容易修改。
https://gist.github.com/2574969
您需要重新启动rails服务器才能使其正常工作,因为它会修改active_admin.rb初始化程序。
当然它会创建一个类,这是你想要避免的,但在没有任何其他的情况下,这确实有效。
答案 3 :(得分:3)
非常简单,
假设您的布尔字段名称处于活动状态,
创建一个名为status的方法,如
def status
self.active ? "Yes" : "No"
end
将状态用作有效管理员展示或索引中的常规字段。
答案 4 :(得分:2)
正如艾哈迈德所说,你想避免为此创建课程。
所以还有另一个解决方案:
在您的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会在你的locales文件中搜索正确的翻译,并用'Yes / No'替换'true / false'。
我认为这是一个更好的解决方案,您遵循“Rails精神”,并且使用不同语言的active_admin面板变得更加容易。
缺点(因为总有一个),每次你想要用是/否替换布尔值时你需要使用“t”函数。
向active_admin gem提出拉取请求会很好,只需像我一样更改yml文件就可以替换布尔值。
但是......直到它完成了,我的解决方案运行正常。 :)
答案 5 :(得分:1)
我认为这也可以,而不再修补猴子。
对于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
答案 6 :(得分:0)
如果额外的依赖不会给您带来麻烦,请查看https://github.com/parabuzzle/humanize_boolean自动执行该功能并支持i18n。