Rails_admin和paperclip:文件夹出公共文件夹,如何下载?

时间:2012-06-04 14:34:57

标签: paperclip rails-admin

我正在使用最后一个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。

1 个答案:

答案 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中抓取的,对于发送未存储在公共/根目录中的文件来下载购买的文件非常常见。

这里的另一个选择是创建一个符号链接来提供文件,但如果需要,这将跳过授权步骤。