在Rails控制器中send_file之后发生了什么?

时间:2014-02-19 03:46:10

标签: ruby-on-rails

index视图中,有一个下载文件的链接:

<%= link_to filename, listing_download_path(:file => filename) %>

在控制器中:

def download
    pathname = File.join(USER_FOLDER, params[:file])
    if File.file?(pathname)
      send_file pathname
    end
  end
end

当用户单击下载时,将显示文件下载弹出窗口。文件下载后会发生什么?铁路只是坐在那里再做什么?如果我删除send_file行,则会呈现dwonload.html.erbsend_file是否跳过了视图渲染?

如果我想要显示“你已下载...”这样的内容怎么办?

1 个答案:

答案 0 :(得分:0)

send_file是一个渲染本身。您可以使用此问题中提出的方法:

Rails: send_file never renders page or DoubleRender error

基本上,您的下载链接将发送到“成功”视图,您可以从中自动调用下载文件方法。