13

如何让活动管理员显示“是”和“否”而不是“真”和“假”。

我试图改变英语语言环境,但这不起作用。我正在考虑猴子补丁布尔类,但这看起来很丑陋。

还有什么我可以做的吗?

4

7 回答 7

55

你可能想做这样的事情:

index do
  id_column
  column(:published) do |story| 
    story.published? ? status_tag( "yes", :ok ) : status_tag( "no" )
  end
end

这将在状态标签中包含“是”和“否”这两个词,看起来相当不错。

于 2013-05-15T16:54:42.713 回答
15

尝试直接在活动管理员中使用条件,如下所示

column :column_name do|object|
    object.column_name? ? 'Yes' : 'No'
end
于 2013-05-10T06:20:48.700 回答
9

在这里,这行得通,它给你一个勾号和叉号,但似乎很容易修改。

https://gist.github.com/2574969

您需要重新启动 Rails 服务器才能使其正常工作,因为它会修改 active_admin.rb 初始化程序。

当然,它创建了一个类,这是您想要避免的,但是在没有其他任何东西的情况下,这确实有效。

于 2012-06-02T15:58:37.447 回答
3

它非常简单,

假设您的布尔字段名称处于活动状态,

创建一个名为 status 的方法,例如

def status
  self.active ? "Yes" : "No"
end

状态用作活动管理显示或索引中的普通字段。

于 2013-05-10T09:17:55.313 回答
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 就会在您的语言环境文件中搜索正确的翻译并将“真/假”替换为“是/否”。

我认为这是一个更好的解决方案,您遵循“Rails Spirit”,并且拥有不同语言的 active_admin 面板变得更加容易。

缺点(因为总是有一个)是每次你想用是/否替换布尔值时都需要使用“t”函数......

向 active_admin gem 发出拉取请求会很棒,只需像我一样通过更改 yml 文件来替换布尔值。

但是......直到它完成,我的解决方案工作正常。:)

于 2012-10-25T08:16:09.503 回答
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
于 2017-09-14T15:16:01.753 回答
0

如果额外的依赖项不打扰您,请查看https://github.com/parabuzzle/humanize_boolean,它会自动执行该功能并支持 i18n。

于 2016-06-25T13:20:35.553 回答