2012-06-04 4 views
0

저는 마지막 rails_admin gem과 클립을 사용하고 있습니다.Rails_admin 및 클립 : 공용 폴더에서 파일을 다운로드하는 방법은 무엇입니까?

첨부 파일을 브라우저에서 액세스 할 수없는 폴더에 저장합니다.

내 모델 :

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

일반 파일/자산으로 제공 할 수 없습니다. 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에서 잡고, 및 다운로드 파일을 구입을위한 공공/루트에 저장되지 않은 파일을 전송하기위한 매우 일반적인이다.

대체 옵션은 파일을 제공하기 위해 심볼릭 링크를 만드는 것이지만, 필요한 경우 인증 단계를 생략합니다.

+0

그러면 레일스를 rails_admin에서 컨트롤러와 일치하도록 어떻게 맵핑합니까? –

관련 문제