send_data
is a render, so you can’t do anything after it in a controller method.
The ways around it all involve Javascript. Here’s one way I hacked together and never really liked:
- user hits submit
- small window pops up and connects to the controller to download the file
- main window redirects to the next page
Eventually I turned file generation into a background job. Then the user went to a jobs page (that didn’t need a subsequent redirect) to get the files.