我正在使用最后一个rails_admin gem和paperclip。
我将附件保存到浏览器无法访问的文件夹中。
我的模特:
class MyModel < ActiveRecord::Base
has_attached_file :file, :path => ":rails_root/storage/:rails_env/attachments/:id/:style/:basename.:extension"
end
但是知道我无法使用rails_admin检索文件。当我点击我的链接时:
No route matches [GET] "/system/files/20/original/my_pdf.pdf"
这是正常的,因为我的文件不在公共文件夹中。
你知道解决方案吗?当然我试着设置:url。
答案 0 :(得分:-1)
您将无法将其作为普通文件/资产投放。您可能希望创建一个新的控制器#动作,用于通过send_file发送文件,例如
class DownloadsController < ApplicationController
def show
item = Product.find(params[:id])
if current_user.downloads.include?(item)
send_file "#{Rails.root}/#{item.downloadable.url(:default, false)}"
else
redirect_to(root_url, :notice => "You do not have access to this content.")
end
end
end
这是从博客文章here中抓取的,对于发送未存储在公共/根目录中的文件来下载购买的文件非常常见。
这里的另一个选择是创建一个符号链接来提供文件,但如果需要,这将跳过授权步骤。