Rails我如何 - 使用send_data导出数据然后重定向到新页面?

时间:2009-03-30 21:28:54

标签: ruby-on-rails

我有一个rails应用程序,允许用户下载生成的CSV文件。下载文件后,我想将用户重定向到新的URL或操作。在send_data之后有一个重定向的技巧吗?

我想做这样的事情(这不起作用):

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

2 个答案:

答案 0 :(得分:12)

send_data是一个渲染,所以在控制器方法中你不能做任何事情。

围绕它的方法都涉及Javascript。这是我一起攻击并且从未真正喜欢的一种方式:

  • 用户点击提交
  • 弹出小窗口并连接到控制器以下载文件
  • 主窗口重定向到下一页

最终我将文件生成转换为后台作业。然后,用户转到作业页面(不需要后续重定向)来获取文件。

答案 1 :(得分:1)

在我的情况下,我在第1页中有一个下载链接,并且在成功下载后,我只想将它们重定向到第1页(具有下载链接的同一页面)。如果您遇到与我相同的情况,请执行以下一项。

只需在您的下载按钮/链接中添加target="_blank"。这仅适用于send_data渲染方法。如果使用send_file,则必须在js中处理。

它将重定向到单独的页面,并弹出一个下载文件保存选项。保存后,它会关闭新标签页,并将其带到您单击下载按钮的页面。