Rails как мне - экспортировать данные с помощью send_data, а затем перенаправить на новую страницу?

У меня есть приложение rails, которое позволяет пользователю загружать сгенерированный CSV файл. После загрузки файла я хочу перенаправить пользователя на новый URL-адрес или действие. Есть ли способ сделать перенаправление после send_data?

Я хочу сделать что-то вроде этого (что не работает):

send_data(output,:type => content_type,:filename => "myfile.csv")
redirect_to :controller => 'my_controller', :action => 'download_done'

Ответ 1

send_data - это рендер, поэтому вы не можете ничего сделать после него в методе контроллера.

Пути вокруг всего включают Javascript. Здесь один из способов, которым я взломал и никогда не любил:

  • Пользовательские хиты submit
  • появляется небольшое окно и подключается к контроллеру для загрузки файла
  • главное окно перенаправляется на следующую страницу

В конце концов я превратил генерацию файлов в фоновое задание. Затем пользователь перешел на страницу заданий (которая не нуждалась в последующей переадресации), чтобы получить файлы.