ruby-on-rails - ruby 西纳特拉 : redirect page not working?

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

最佳答案

@Soup 的链接很适合阅读。关于 Sinatra,send_file calls halt ,结束请求(在本例中通过发送状态和文件)。 Nothing will be processed after a halt .

关于ruby-on-rails - ruby 西纳特拉 : redirect page not working?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20339513/

相关文章:

ruby-on-rails - Rails代码共享: gem vs plugin vs submodule?

ruby-on-rails - Ruby on Rails SaaS 应用程序从哪里开始,使用什么工具

ruby - 用逗号将字符串分割成数组,除非逗号在引号内

mysql - 与 ActiveRecord 和 Sinatra 的多维 JOIN

activerecord - 西纳特拉错误 : NoMethodError: undefined method `get' for #<Class:0x007fa70444aef0>

ruby-on-rails - Rails Grape API 'id is invalid' 在不需要 id 的请求中

ruby - 连接:SSL_connect returned=1 errno=0 state=SSLv3 read server certificate B: certificate verify failed (OpenSSL::SSL::SSLError)

javascript - 将 rails 变量传递给 js 函数

ruby - "after"过滤器中的 Sinatra response.status

ruby-on-rails - FactoryGirl 父类工厂随机选择其 STI 子类之一