首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用wicked_pdf创建pdf并传递给carrierwave进行上传

使用wicked_pdf创建pdf并传递给carrierwave进行上传
EN

Stack Overflow用户
提问于 2016-08-21 09:01:14
回答 1查看 1.4K关注 0票数 1

我目前有一个使用wicked_pdf和carrierwave功能的rails应用程序(4.2.1)。用户当前单击将家庭评估视图呈现为PDF的按钮,然后将PDF下载到其计算机并导航到评估表,然后提交PDF并将其成功上载到AWS。

这一切都很好,但是我想要做的是“简化”这个过程。当用户点击一个按钮时,PDF将被创建并传递给carrierwave,以便使用carrierwave/fog上传到AWS。我现在有一个视图,其中包含一个控制器的链接,该控制器调用FamilyAssesment.upload_assessment方法。

我一直在尝试不同的方法,但似乎就是不能确切地理解我需要做些什么才能让它工作。

视图上的按钮

代码语言:javascript
复制
<%= link_to "Upload", family_assessment_pdf_upload_url(id: "#{f.object.case.id}"), class: 'button radius default tiny pdf-button' %>

family_assessments_controller.rb

代码语言:javascript
复制
class FamilyAssessmentsController < ApplicationController

  def family_assessment_pdf_upload
    c = Case.find(params[:id])
    family_assessment = c.family_assessment
    assessment = c.assessments.where(title: 'Families First Assessment').first

    FamilyAssessment.upload_assessment(assessment, family_assessment)

    #If work is done and url saved to assessment.assessment do some redirect action here 

  end

end

family_assessment.rb

代码语言:javascript
复制
class FamilyAssessment < ActiveRecord::Base

  def self.upload_assessment(assessment, family_assessment)
    family_assessment = family_assessment
    assessment = assessment 

    #I think this is how I would create the PDF in preparation for hand off to carrierwave

    pdf = WickedPdf.new.pdf_from_string(
      render_to_string(:pdf => "family_assessment",:template => 'family_assessments/family_assessment.pdf.erb', :locals => {:family_assessment => family_assessment})
    )

    #Pass pdf to carrierwave and save url in assessment.assessment

  end

end
EN

回答 1

Stack Overflow用户

发布于 2016-08-23 12:04:58

看起来您可以将PDF保存为临时文件,然后上载该临时文件。

代码语言:javascript
复制
class FamilyAssessment < ActiveRecord::Base

  def self.upload_assessment(assessment, family_assessment)
    family_assessment = family_assessment
    assessment = assessment 

    #I think this is how I would create the PDF in preparation for hand off to carrierwave

    pdf = WickedPdf.new.pdf_from_string(
      render_to_string(:pdf => "family_assessment",:template => 'family_assessments/family_assessment.pdf.erb', :locals => {:family_assessment => family_assessment})
    )

    #Pass pdf to carrierwave and save url in assessment.assessment
    # Write it to tempfile
    tempfile = Tempfile.new("#{Rails.root}/tmp/assessment_#{self.id}.pdf")
    tempfile.binmode
    tempfile.write pdf_file
    tempfile.close

    # Attach that tempfile to the invoice
    unless pdf_file.blank?
      self.uploads.clear
      self.uploads.create(fileinfo: File.open(tempfile.path), job_id: self.job.id)
      tempfile.unlink
    end

  end

end

这个答案很大一部分来自Getting PDF from WickedPDF for attachment via Carrierwave

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39059996

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档