我知道如何在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
即使您的轻微提示也会受到赞赏,谢谢:)
答案 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