用户单击图像以下载rails中的公共文件

tes*_*sad 1 ruby-on-rails-3

我希望我的rails应用程序的用户能够点击"下载"链接,然后他们将下载我放在公共文件夹中的png文件.( 'tool.png')

目前我有不正确的......

<%= link_to "download", '/tool.png', :action => 'download' %>
Run Code Online (Sandbox Code Playgroud)

我在控制器中创建了一个下载操作:

def download
    send_file '/tool.png', :type=>"application/png", :x_sendfile=>true
end
Run Code Online (Sandbox Code Playgroud)

这里发生的事情是,当用户点击"下载"链接时,它会在自己的窗口中打开tool.png,而不是实际下载文件.

谁能帮我这个?

谢谢

dav*_*son 6

HTML 5

因为HTML5它实际上非常简单.您不需要特殊的控制器操作.

<%= link_to "download", '/tool.png', :download => 'filename' %>
# 'filename' specifies the new name for the downloaded file
Run Code Online (Sandbox Code Playgroud)

注意:检查文档以查看支持的浏览器

<HTML 5

如果要支持所有浏览器,则必须使用download action您设置的浏览器.唯一缺少的是设置正确的route.

的routes.rb

get '/download_pdf', "controller_name#download", :as => :download_pdf
Run Code Online (Sandbox Code Playgroud)

然后将您的HTML链接到正确的路径,该路径将调用download action并发送文件.

<%= link_to "download", :download_pdf_path
Run Code Online (Sandbox Code Playgroud)