2015-09-22 60 views
2

我知道如何在webapp中渲染它,但我應該通過api調用生成pdf,所以我需要發送pdf生成的URL而不是pdf本身(這是移動開發人員要求的),是有沒有辦法做到這一點?我如何獲得使用蝦生成的證書的網址?

,如:

respond_to do |format| 
    format.pdf do 
     pdf = CustomCertificatePdf.new(current_user, tutorials) 
     url = pdf.link 
     # send_data pdf.render, filename: "custom_certificate_#{current_user.first_name.downcase}_#{current_user.last_name.downcase}.pdf", 
       # type: "application/pdf", 
       # disposition: "inline" 
     render :json => {url: url} 
    end 
    end 

即使你略帶可以理解,謝謝:)

回答

1

這是我結束了做

pdf = CustomCertificatePdf.new(current_user, tutorials) 
    @filename = File.join("custom_certificate_#{current_user.first_name.downcase}_#{current_user.last_name.downcase}.pdf") 
    pdf.render_file @filename 
    current_user.cust_cert = File.open("custom_certificate_#{current_user.first_name.downcase}_#{current_user.last_name.downcase}.pdf") 
    current_user.save! 

    render :json => {url: "#{current_user.cust_cert}"} 

在用戶模型中

has_mongoid_attached_file :cust_cert, 
         :default_url => "", 
         :path   => ':attachment/:id/:cust_cert', 
         :storage  => :s3, 
         :url   => ':s3_domain_url', 
         :s3_credentials => File.join(Rails.root, 'config', 's3.yml') 



validates_attachment_content_type :cust_cert, :content_type => [ 'application/pdf' ], :if => :cust_cert_attached? 

def cust_cert_attached? 
    self.cust_cert.file? 
end 
1

保存的PDF public文件夾或上傳到另一臺服務器(S3,谷歌驅動器,Dropbox的,...) 然後使用API​​控制器鏈接

如果保存PDF文件public文件夾,鏈接應該是您的主機名+相對路徑與public文件夾

例如:

file_path = "/webapp/public/pdf/custom_certificate.pdf" 

鏈接應該

http://yourhostname.com/pdf/custom_certificate.pdf 

如果你需要保護你的文件,你應該寫另一個控制器與認證服務於它

+0

是的,我明白你的意思,並通過S3嘗試並解決它。謝謝 –

相關問題