Ruby Sinatra:重定向页面不起作用?

时间:2013-12-02 22:52:22

标签: ruby-on-rails ruby sinatra

问题在于以下代码(“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弹出一个窗口时,用户可以选择“取消”)。一些超时机制可能在这里不起作用。

1 个答案:

答案 0 :(得分:0)

@ Soup的链接是一个很好的阅读。关于Sinatra,send_file calls halt,它结束请求(在这种情况下通过发送状态和文件)。 Nothing will be processed after a halt