使用 ActiveAdmin 在 csv 导出中分页

Pagination in csv export using ActiveAdmin

我在使用 ActiveAdmin gem 构建的应用程序中有一些管理面板。我在那里也有 csv 导出。问题是默认情况下,ActiveAdmin 使用大小为 1000 的批次将记录导出到 csv。我想将其更改为更小的数字。我试图在我的 ActiveAdmin 资源中添加类似这样的内容:

  before_filter do
    @per_page = 10
  end

但它不起作用。有什么想法吗?

看起来 batch_sizeActiveAdmin::CSVBuilder class (view on github) 中的硬编码值。既然如此,ActiveAdmin 似乎没有留下任何方法来配置它,除了在初始化程序中猴子修补这个方法:

ActiveAdmin::CSVBuilder.class_eval do
  private
  def batch_size
    10
  end
end

您可能想在 Github 上向 ActiveAdmin 提出功能请求,因为这不是理想的解决方案。

您可以尝试的另一件事是(但它很老套):

ActiveAdmin::CSVBuilder.class_eval do
  attr_writter :batch_size

  private
  def batch_size
    @batch_size ||= 1000
  end
end

这样你就可以在ActiveAdmin dsl method for csv中传入batch_size选项:

csv do
  batch_size = 10
  #...
end