2015-06-16 3 views
1

У меня есть gem 'wicked_pdf' и gem 'comb_pdf' в приложении Rails 3.2. Он отлично работает, если я показываю PDF в браузере.Rails 3 Отправить по электронной почте wicked pdf issue

Я хотел бы написать письмо по электронной почте. Мой текущий код посылает по электронной почте, но PDF просто мусор:

enter image description here

Это код контроллера:

def pdfemail 
    @costprojects = Costproject.find(params[:costproject_ids]) 
    respond_to do |format| 
     format.html 
     format.pdf do 
     pdf = CombinePDF.new 
     @costprojects.each do |costproject| 
      @costproject = costproject 
      pdf2 = render_to_string pdf: "Costproject.pdf", template: "costprojects/viewproject", encoding: "UTF-8" 
      pdf << CombinePDF.parse(pdf2) 
      costproject.attachments.each do |attachment| 
      pdf << CombinePDF.parse(Net::HTTP.get(URI.parse(attachment.attach.url))) 
      end 
     end 
     pdf = pdf.to_pdf 
     SendReport.send_report(pdf).deliver 
     redirect_to :back 
     flash[:notice] = 'Email containing pdf has been sent to you!' 
     end 
    end 
    end 

И это моя почтовая программа:

def send_report(pdf) 
    tomail = "[email protected]" 
    frommail = "[email protected]" 
    attachments['Report.pdf'] = pdf 
    mail(
     :to => tomail, 
     :from => frommail, 
     :subject => "Report pdf") 
    end 

Опять - форматирование pdf прекрасно работает при отображении в браузере.

Спасибо за помощь!

ответ

1

See this question.

В основном вам нужно изменить его на что-то вроде:

attachments['Report.pdf'] = WickedPdf.new.pdf_from_string( render_to_string(:pdf => "report",:template => "costprojects/viewproject") )

+0

Мой код контроллера используется для выбора нескольких costprojects вместе с любыми приложениями S3 они имеют. Код контроллера работает нормально, если я отображаю полученный pdf в браузере. – Reddirt

Смежные вопросы