索引中的 Activeadmin 自定义可排序列

Activeadmin custom sortable column in index

我在索引中有自定义的可排序列 'Status',我怎样才能使其可排序?

 index do
    selectable_column

    column :title
    column :counter
    column 'Status', do |purchase|
      if purchase.status == 'verified' && purchase.expiration_date < DateTime.now.utc
        'ended'
      elsif purchase.status == 'verified' && purchase.expiration_date >= DateTime.now.utc
        'active'
      else
        purchase.status
      end
    end
  end

根据 the docs,您应该能够像这样将 :sortable 键传递给 column 调用:

  index do
    # SNIP
    column 'Status', sortable: :status do |purchase|
      # SNIP
    end
  end

索引 table 自定义排序的文档位于 index as table page

这样解决了一个问题

        column 'Status', sortable: :status do |purchase|
          if purchase.status == 'verified' && purchase.expiration_date < DateTime.now.utc
            'ended'
          elsif purchase.status == 'verified' && purchase.expiration_date >= DateTime.now.utc
            span class: "purchase-status-active" do
              'active'
            end
          else
            purchase.status
          end
        end


      controller do
        def find_collection(options = {})
          if params[:order] == 'status_desc'
            super.reorder(status: :desc, expiration_date: :desc)
          elsif params[:order] == 'status_asc'
            super.reorder(status: :asc, expiration_date: :asc)
          else
            super
          end
        end
      end