質問: link_to "出力",csv_download_path,class: 'btn btn-primary detail-icon',data: {disable_with: "出力中"} ・controller def csv_download 前提計算処理・・・ send_data(csv.output(visit_care), filename: "achievement_#{statrt_month.strftime("%Y/%m/%d")}_#{last_month.strftime("%Y/%m/%d")}.csv", disposition: 'attachment') end ``` ### 試したこと controllerでsend_data処理後にredirect_toで画面更新の呼び出しを追加 →エラーとなる ### 補足情報(rails/rubymine/)
回答: 通常のアクセスの場合、send_dataでも、send_fileでも、renderでも、レスポンスはレスポンスとして扱うので、全てのデータを受け取ったかどうかをサーバー側で判別し、残りの処理を行う事は出来ません。 ですから、send_dataのあと、redirect_toを行ったときには、double render errorが返ったかと思います。 対策としては、link_toのアクセスをjavascriptのAjaxで行うしかないかと思います。 コントローラ側は現状のsend_dataのまま、リクエストのリンククリックイベントをJavascriptでとらえて、Ajaxアクセスを開始、全データが送り終わったかどうかは、その際のイベントで受けて、そこから正常アクセスでリダイレクトするのがいいかと。