ActiveAdmin:如何将格式化程序添加到具有特定名称的任何列?
ActiveAdmin: how to add formatter to any column with specific name?
我有一个名为 ip_with_location
的助手,它将 10.10.10.10
转换为 10.10.10.10 - DE, Berlin
形式。
用法示例:
index do
...
column :ip do |r|
ip_with_location(r.ip)
end
end
问题是:有没有办法用我的自定义助手自动格式化列值?
所以我只写column :ip
。
在模型级别覆盖 ip
getter 不是一个选项,因为我只希望在 ActiveAdmin
中使用这种格式
ActiveAdmin 没有为此构建的方法。
- 您可以在您的模型上构建一个
ip_with_location
方法并在 Admin 中使用它
- 你可以给我们一个Decorator
你可以写一个'template'
# app/admin/ip_column.rb
require "active_admin/views/index_as_table"
module ActiveAdmin
module Views
class IndexAsTable < ActiveAdmin::Component
class IndexTableFor < ::ActiveAdmin::Views::TableFor
def ip_column
column :ip do |r|
ip_with_location(r.ip)
end
end
end
end
end
end
# app/admin/user.rb
require "ip_column"
index do
id_column
column :name
ip_column
end
我有一个名为 ip_with_location
的助手,它将 10.10.10.10
转换为 10.10.10.10 - DE, Berlin
形式。
用法示例:
index do
...
column :ip do |r|
ip_with_location(r.ip)
end
end
问题是:有没有办法用我的自定义助手自动格式化列值?
所以我只写column :ip
。
在模型级别覆盖 ip
getter 不是一个选项,因为我只希望在 ActiveAdmin
ActiveAdmin 没有为此构建的方法。
- 您可以在您的模型上构建一个
ip_with_location
方法并在 Admin 中使用它
- 你可以给我们一个Decorator
你可以写一个'template'
# app/admin/ip_column.rb require "active_admin/views/index_as_table" module ActiveAdmin module Views class IndexAsTable < ActiveAdmin::Component class IndexTableFor < ::ActiveAdmin::Views::TableFor def ip_column column :ip do |r| ip_with_location(r.ip) end end end end end end # app/admin/user.rb require "ip_column" index do id_column column :name ip_column end