【问题标题】:Ruby on Rails: How to download a file with send_file and still show a viewRuby on Rails:如何使用 send_file 下载文件并仍然显示视图
【发布时间】:2012-08-26 10:06:00
【问题描述】:

我正在发送一封电子邮件,其中包含可下载小册子的链接。

这是我的下载操作

def download
    @thing = Thing.find_using_slug(params[:id])

    send_file @thing.brochure.path, 
        :type => 'application/pdf', 
        :filename => "#{@thing.name}_brochure.pdf"
end

当用户单击电子邮件中的链接时,它会开始下载,然后他们会看到一个空白屏幕。我想呈现一个登陆页面并仍然发送文件。

【问题讨论】:

    标签: ruby-on-rails sendfile


    【解决方案1】:

    将电子邮件中的链接指向登录页面的操作可能是一个更好的主意,可能会附加类似?dl 查询字符串。

    着陆页操作可以有条件地检查params.include?(:dl),如果找到,则将类似以下的Javascript附加到着陆页HTML的<head>

    window.onload = function() {
      setTimeout(function() {
        window.location = 'URL TO DOWNLOAD ACTION HERE';
      }, 2000);
    }
    

    最好还提供一个链接着陆页(同样,条件是?dl查询字符串的存在),以防用户已禁用 Javascript 或不想等待 2 秒进行重定向。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-06-29
      • 2015-09-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-01-05
      • 2023-04-08
      相关资源
      最近更新 更多