Rails 5破坏了send_file方法?

ich*_*kov 5 ruby-on-rails download mime-types

我最近将我的应用程序升级到Rails 5,我的下载停止了.当我点击下载按钮时,浏览器挂起,没有任何反应.

class DownloadsController < ApplicationController
  def download
    send_file(
      "#{Rails.root}/public/file.rtf",
      filename: "file.rtf",
      type: :rtf,
      disposition: "attachment"
    )
  end
end
Run Code Online (Sandbox Code Playgroud)

我有rtf mimetype

Mime::Type.register "text/richtext", :rtf
Run Code Online (Sandbox Code Playgroud)

日志显示一切正常

Sent file /home/deploy/app/releases/20160518213049/public/file.rtf (0.4ms)
I, [2016-05-18T17:34:48.435946 #20202]  INFO -- : [d02e8ea3-53da-440d-b3b1-cc6bfd6524dc] Completed 200 OK in 17ms (ActiveRecord: 4.4ms)
Run Code Online (Sandbox Code Playgroud)

mms*_*viu 3

正如上面评论中详细说明的,解决方案是禁用 link_to 的 Turbolinks。对于 Turbolinks 5,这可以完成,正如 此处所描述的那样,使用data-turbolinks="false"

<%= link_to "Foo", new_foo_path(@foo), data: { turbolinks: false } %>
Run Code Online (Sandbox Code Playgroud)