ActiveAdmin:如何将formatter添加到具有特定名称的任何列?

时间:2016-03-11 10:26:00

标签: ruby-on-rails activeadmin

我有一个名为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

中使用这种格式

1 个答案:

答案 0 :(得分:1)

ActiveAdmin没有为此做好准备。

  1. 您可以在模型上构建ip_with_location方法,并在Admin
  2. 中使用此方法
  3. 您可以Decorator
  4. 您可以撰写'模板'

    # 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