2

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

这是我的下载操作

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

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

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

4

1 回答 1

0

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

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

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

如果用户禁用了 Javascript 或不想等待 2 秒进行重定向,则最好登录页面上提供链接(同样,以存在?dl查询字符串为条件) 。

于 2012-08-31T15:01:51.953 回答