LoginSignup
2
2

More than 5 years have passed since last update.

activeadminでCSVダウンロード時のみpaginate外す

Last updated at Posted at 2015-11-10

paginateをtrueにしていると、CSVダウンロード時にも有効になってしまう。
CSVダウンロード時にはpaginateしたくない。そんな時の対処。

あらかじめ、最大件数を設定しておく

config/initializers/active_admin.rb
config.max_per_page = 60_000

モンキーパッチ当てる(どこかから拾ったんですが・・w)

lib/monkey_patches/active_admin/resource_controller/collection/pagination.rb
module ActiveAdmin
  class ResourceController
    module Collection
      module Pagination
        def per_page
          return max_per_page if request.format == 'text/csv'
          return max_per_page if active_admin_config.paginate == false
          @per_page || active_admin_config.per_page
        end
      end
    end
  end
end

これでOKです。 CSVダウンロード時のみ、最大件数まで取得できます
ちなみに、他のメソッド内とかで呼びたい時は基本、

config.max_per_page

でいいのですが、たまにnilで返ってくる時があります。(なんか拡張するようなコード書いてる時etc...)
そんな時は、

active_admin_config.namespace.application.max_per_page

で設定した最大件数が取得できる・・・はず。

何かの参考になれば

2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2