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

dau*_*777 14 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'
Run Code Online (Sandbox Code Playgroud)

Sar*_*Mei 12

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

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

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

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


小智 8

就我而言,我在第 1 页有一个下载链接,成功下载后,我只想将它们重定向到第 1 页(具有下载链接的同一页面)。如果您也有和我一样的情况,请执行以下操作。

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

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