这似乎应该是直截了当的,但我很难过。我有一个视图控制器的链接,最终使用send_data将文件下载到用户的硬盘驱动器。这非常有效,它使当前视图显然不受影响。
但是现在我希望该页面在下载完成后提供一些反馈。在send_data方法调用之前,我天真地在控制器中添加了类似下面的代码:
flash[:notice] = "Nice work, hot shot!"
send_data file, :filename=>fullname+".txt", :type=>"text/plain"
但这不起作用,因为当前视图没有重新加载,让我有机会显示flash var。
我也尝试为此操作添加一个RJS视图,但这导致旧的DoubleRender错误,因为send_data也是一个渲染操作。
所以...呃......运行send_data后,如何将数据传回当前视图?或者还有另一种解决这个问题的方法吗?
谢谢! 亚伦。
答案 0 :(得分:3)
也许你可以在响应中设置一个cookie,并在点击下载文件的链接时使用javascript对该cookie进行轮询。
可以像这样设置cookie:
cookies["download_finished"] = "true"
send_data file, :filename=>fullname+".txt", :type=>"text/plain"
然后使用您最喜欢的javascript框架定期为该cookie。