我有一个rails应用程序,允许用户下载生成的CSV文件。下载文件后,我想将用户重定向到新的URL或操作。在send_data之后有一个重定向的技巧吗?
我想做这样的事情(这不起作用):
send_data(output,:type => content_type,:filename => "myfile.csv")
redirect_to :controller => 'my_controller', :action => 'download_done'
答案 0 :(得分:12)
send_data
是一个渲染,所以在控制器方法中你不能做任何事情。
围绕它的方法都涉及Javascript。这是我一起攻击并且从未真正喜欢的一种方式:
最终我将文件生成转换为后台作业。然后,用户转到作业页面(不需要后续重定向)来获取文件。
答案 1 :(得分:1)
在我的情况下,我在第1页中有一个下载链接,并且在成功下载后,我只想将它们重定向到第1页(具有下载链接的同一页面)。如果您遇到与我相同的情况,请执行以下一项。
只需在您的下载按钮/链接中添加target="_blank"
。这仅适用于send_data
渲染方法。如果使用send_file
,则必须在js中处理。
它将重定向到单独的页面,并弹出一个下载文件保存选项。保存后,它会关闭新标签页,并将其带到您单击下载按钮的页面。