我如何获得使用prawn生成的证书的URL?

时间:2015-09-22 04:21:20

标签: ruby-on-rails ruby pdf prawn

我知道如何在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

即使您的轻微提示也会受到赞赏,谢谢:)

2 个答案:

答案 0 :(得分:1)

将pdf保存到public文件夹或上传到其他服务器(S3,google drive,dropbox,...) 然后在api控制器中使用该链接

如果您将pdf文件保存在public文件夹中,该链接应该是您的主机名+相对路径public文件夹

例如:

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

链接应为

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

如果您需要保护您的文件,您应该编写另一个控制器来为其提供身份验证

答案 1 :(得分: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