问题在于以下代码(“routes.rb”)。
post 'download_csr' do
file_name = File.dirname(__FILE__) + '/cert.csr'
File.open(file_name, 'w') do |f|
f.write params[:csr]
end
send_file file_name, :disposition => 'attachment'
erb :load_certificate, :locals => { :csr => 'cert.csr' }
end
流程如下:用户单击表单上的按钮,然后写入文件并下载到本地系统,然后转到另一个页面(即“load_certificate.erb”)。
然而,实际发生的是,在下载文件后,它不会转到下一页。但如果我注释掉“send_file”,它将转到下一页。那么如何解决这个问题呢?非常感谢!
还有一件事:在进入下一页之前确保文件实际下载是件好事(因为当send_file弹出一个窗口时,用户可以选择“取消”)。一些超时机制可能在这里不起作用。
答案 0 :(得分:0)
@ Soup的链接是一个很好的阅读。关于Sinatra,send_file
calls halt
,它结束请求(在这种情况下通过发送状态和文件)。 Nothing will be processed after a halt