使用gem Paperclip下载文件

时间:2015-12-27 11:05:11

标签: ruby-on-rails download paperclip

我想了解如何使用Paperclip下载文件。我将文件上传到本地存储。

这是模特:

class AFile < ActiveRecord::Base
  has_attached_file :attach,
  :url => "public/attach/:basename.:extension",
  :path => ":rails_root/public/attach/:basename.:extension"
  validates_attachment_content_type :attach, content_type: "text/plain"
end

查看show.html.erb:

<p>
  <strong>AFile:</strong>
  <%= @afile.name_file %>
</p>

<%= link_to 'Download', @afile.attach.url(:original, false) %> |
<%= link_to 'Edit', edit_afile_path(@afile) %> |
<%= link_to 'Back', afiles_path %>

我是这样的: File download using Paperclip 但它没有帮助。

但是当我点击下载时,则出现错误: 没有路线匹配[GET]“/public/attach/text.txt”

如何解决这个问题?为什么单击“下载”无法下载文件?

2 个答案:

答案 0 :(得分:2)

Rails将/public目录放在服务器Web根目录中。因此,/public/foo.txt可以访问文件系统路径为http://localhost:3000/foo.txt的文件,而不是http://localhost:3000/public/foo.txt

因此您需要更改附件的url选项:

class AFile < ActiveRecord::Base
  has_attached_file :attach,
  :url => "/attach/:basename.:extension",
  :path => ":rails_root/public/attach/:basename.:extension"
  validates_attachment_content_type :attach, content_type: "text/plain"
end

答案 1 :(得分:-1)

我的下载文件解决方案如下:

<%= link_to 'Download', @afile.attach.url(:original),
    download: @afile.attach.url(:original)%>