【问题标题】:How to customize one column and display remaining in activeadmin如何在activeadmin中自定义一列并显示剩余
【发布时间】:2013-01-19 12:52:17
【问题描述】:

我在我的 rails 应用程序中使用 Active admin gem。我添加了有 20 列的资源书,现在我只需要自定义一列并按原样打印剩余的列。我试过下面的代码

ActiveAdmin.register Book do
 index do
  column :description do 
    raw "<a class='view_description button'>View Description</a>"
  end
 end
end

但是它隐藏了所有的列并且只显示描述。任何帮助都会很有用。

【问题讨论】:

标签: ruby-on-rails-3 activeadmin


【解决方案1】:

这个怎么样?

ActiveAdmin.register Book do
  index do
    columns_to_exclude = ["name"]
    (Book.column_names - columns_to_exclude).each do |c|
      column c.to_sym
    end
    column :description do 
      raw "<a class='view_description button'>View Description</a>"
    end
   end
end

【讨论】:

  • 正在互联网上到处搜索这个!谢谢!
  • 这是 StackOverflow 中的最佳答案。
  • 但在这种情况下链接(即href)默认显示在某些列上,即引用的列不保留。如何在不使用 link_to 方法添加单个列的情况下也获得它?
【解决方案2】:

如果您指定一个索引块,则需要放置所有要显示的列,因为您正在替换“默认”行为。

在您的情况下,您需要添加其他 19 列,例如:

ActiveAdmin.register Book do
 index do
  column :one
  column :two
  column :three
  column :name
  column :title
  column :pages
  column :description do 
    raw "<a class='view_description button'>View Description</a>"
  end
 end
end

【讨论】:

  • 只是一个提示,最好使用link_to 'View Description', root_path, class: 'view_description button'而不是原始链接
【解决方案3】:

就我而言,我只想重命名一列, 我已经这样做了->

index do
    column :one
    column :two  
    ....
    column "View Description", :description # This will change you column label **description** to **View Description**
end

【讨论】:

    【解决方案4】:

    我也很好奇这个问题。这是我发现的

      index do
        column :id
        active_admin_config.resource_columns.each do |attribute|
          column attribute
        end
      end
    

    https://github.com/activeadmin/activeadmin/blob/5dbf9b690302ecb4ba0c0ce59b2fb4735c88b35c/lib/active_admin/views/index_as_table.rb#L261

    【讨论】:

    • MVP 答案就在这里...这也适用于show do 等...这是使用 active_admin 内部检索所有列的好方法
    【解决方案5】:

    当您只想将单个列添加或自定义到默认列表时,这也适用(基于针对 belongs_to 的关联)。

    ActiveAdmin.register Book do
      index do
        column :publisher do |book|
          book.publisher.name
        end
        Book.column_names.each do |c|
          column c.to_sym
        end
    
      end
    end
    

    【讨论】:

      【解决方案6】:

      总的来说,这很容易..

      ActiveAdmin.register Book do
        index do
          (Book.column_names - ["column_to_customize"]).each do |c|
            column c.to_sym
          end
          column :column_to_customize do 
            raw "<a class='view_description button'>View Description</a>"
          end
        end
      end
      

      【讨论】:

      • 但在这种情况下链接(即href)默认显示在某些列上,即引用的列不保留。如何在不使用 link_to 方法添加单个列的情况下也获得它?
      【解决方案7】:

      这非常准确地以通用方式模仿原始行为:

      index do
        selectable_column
      
        Book.column_names.each do |c|
          # Filter foreign IDs and counter caches
          column c.to_sym unless c.ends_with?('_id') || c.ends_with?('_count')
        end
      
        Book.reflect_on_all_associations(:belongs_to).map(&:name).each do |association|
          column association
        end
      
        # Whatever custom thing you want
      
        actions
      end
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-03-17
        • 1970-01-01
        • 2020-05-02
        • 1970-01-01
        • 2015-10-17
        • 2014-08-14
        • 2022-11-14
        • 1970-01-01
        相关资源
        最近更新 更多