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