【分からないこと】
form_with
のsubmitボタンを押した後、バックエンドのアクションが実行されますが、完了したらフロント側で感知したいです。
フロントのsubmitボタンは下記の仕様です。
haml
1= form_with url: messages_create_mailing_label_path(format: :csv), method: :patch do |f| 2 3~ 省略 4 5%input.mailing-label-sbm-btn.btn.btn-primary.mr-4{ type: 'submit', value: 'CSV出力' }
上記の通り、format: csv
が指定されています。
バックエンドの処理ではフロントへの返り値として
ruby
1def create_mailing_label 2 3~省略 4 5 respond_to do |format| 6 format.csv do 7 send_mailing_label_csv(array_for_csv) 8 end 9 end 10end 11 12def send_mailing_label_csv(array_for_csv) 13 bom = %w[EF BB BF].map { |e| e.hex.chr }.join 14 csv_data = CSV.generate(bom) do |csv| 15 array_for_csv.each do |c| 16 csv << c 17 end 18 end 19 send_data(csv_data, filename: "#{Time.zone.now.to_date}_宛名ラベル.csv") 20 end 21
このようにcsvファイルを作成、ダウンロードするようにしています。
解決したいこととしましてはダウンロード後にフロントで処理を行いたいのですが、send_mailing_label_csv(array_for_csv)
しか返せないため、フロントでアクションを起こせないことです。
javascriptで何か感知する方法がないか、もしくはバックエンドから働きかける等の方法があれば教えていただきたいです。
あなたの回答
tips
プレビュー