在ActiveAdmin中下载分页资源的所有记录

时间:2013-03-25 10:01:33

标签: activeadmin

我正在尝试使用Active Admin中已存在的集合操作“download_csv”来下载资源的所有记录。但是,该操作仅下载当前页面的内容。由于我已经对资源进行了分页,因此需要从所有页面下载数据。关于如何解决这个问题的任何建议?

3 个答案:

答案 0 :(得分:5)

仅限未来的googlers。我的修复(适用于当前的Master 1.0.0pre)是将以下内容添加到config/initializers/active_admin.rb

module ActiveAdmin
  class ResourceController
    module DataAccess
      # needed for current active admin master
      def max_per_page
        30_000
      end

      def per_page
        return 30_000 if %w(text/csv application/xml application/json).include?(request.format)

        return max_per_page if active_admin_config.paginate == false

        @per_page || active_admin_config.per_page
      end
    end
  end
end

根据需要更换最大值。这适用于csv,xml和json下载。

答案 1 :(得分:2)

这个答案可能有点晚,但希望它可以帮助某人。

以下是我在当前应用中使用此功能的方法:

csv do
  ModelName::ATTR_ADMIN_EXPORT.each do |sym|
    column sym
  end
end

在模型中我有ATTR_ADMIN_EXPORT定义如下:

ATTR_ADMIN_EXPORT = [:name, :created_at]

请告诉我这是否适合您!

答案 2 :(得分:1)

你可以试试这个

before_filter :only => :index do
  @per_page = 10 unless request.format == 'text/csv'
end

此代码也会使分页动态化。

 before_filter :only => :index do
   if params[:pag].blank?
     @per_page = AdminSetting.where(:name => 'JobPagination').first.value.to_i unless request.format == 'text/csv'
   else
     @per_page = 10  
   end
 end