3

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

4

3 回答 3

5

只为未来的谷歌人。我的修复(适用于当前的 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 下载。

于 2014-01-16T01:43:57.230 回答
2

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

这是我在当前应用程序中的工作方式:

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

在模型中,我的 ATTR_ADMIN_EXPORT 定义如下:

ATTR_ADMIN_EXPORT = [:name, :created_at]

让我知道这是否适合您!

于 2013-05-06T15:28:30.517 回答
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
于 2013-05-17T02:40:19.187 回答