あるデータの一覧のCSVダウンロードした後に画面の情報が変わっていることを確認させる必要があったときの開発メモ。
controllerからだとリダイレクトは出来ない。
自分の考えとしてはcontroller内のアクションにダウンロードした後にリダイレクトをさせれば良いと考え以下のように記載。
def download
respond_to do |format|
format.csv do
send_data render_to_string, filename: "#{__method__}_#{Time.zone.now.strftime('%Y%m%d')}.csv", type: :csv
end
end
redirect_to hoge_url
end
ただこれだとDouble renderとなり起こられてしまう。
解決 jsでリダイレクトさせる
slim
.text-right
= link_to 'CSV', download_path(format: :csv),
class: 'btn btn-link', id:'download-csv', target: '_blank'
js
$('#download-csv').click -> location.reload()