ActiveAdminのCSVダウンロードをカスタマイズする

  • 2
    いいね
  • 4
    コメント

ActiveAdminのリソースのindexには、モデルの全データをCSVダウンロードするボタンがついてくるが、行や列を絞ったCSVをダウンロードするボタンを追加してみる。(結果的には、CSVを一行ずつ組み立てるだけ)

ActiveAdmin.register Klass do
  before_filter :skip_sidebar!

  collection_action :download_report, method: :get do
    query = Klass.get_query
    csv_data = CSV.generate do |csv|
      csv << %w{col1 col2}
      query.each do |row|
        csv << [row.col1, row.col2]
      end
    end
    send_data csv_data, type: 'text/csv; header=present', disposition: 'attachment; filename=file.csv'
  end

  action_item only: :index do
    link_to 'download report', params.merge(action: :download_report)
  end

  index download_links: false do
    # ...
  end
end

参考

以下をコピーして修正した