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
参考
以下をコピーして修正した