Controller method
def email_pdf
@job = Job.find_by_id(params[:id].to_i)
job_pdf = WickedPdf.new.pdf_from_string(render_to_string(:pdf => 'job', :template => 'job/show.pdf.erb', layout: 'mailer.html.erb'))
JobMailer.send_jobs_email(params[:id].to_i, 'vir.jain@gmail.com', 'Mahavir Jain', job_pdf).deliver_now
respond_to do |format|
format.json do
render :json => {:success => true}, :status => 200
end
end
end
Job Mailer
class JobMailer < ApplicationMailer
def send_jobs_email(job_id, email, name, job_pdf)
@name = name
@job = Job.find_by_id(job_id)
puts 'hello1'
attachments['job'] = job_pdf
puts @name
mail(to: email, subject: 'Job', from: 'info@janatrak.com', from_name: 'JanaTrak Admin')
end
end
Output
Rendered job/show.pdf.erb within layouts/mailer.html.erb (15.0ms)
"***************[\"/usr/local/bin/wkhtmltopdf\", \"-q\", \"file:///var/folders/dk/t3scf65x5vx23qq1fsm53s3r0000gn/T/wicked_pdf20151007-4801-h2de03.html\", \"/var/folders/dk/t3scf65x5vx23qq1fsm53s3r0000gn/T/wicked_pdf_generated_file20151007-4801-7uwh23.pdf\"]***************"
"***************[\"/usr/local/bin/wkhtmltopdf\", \"-q\", \"file:///var/folders/dk/t3scf65x5vx23qq1fsm53s3r0000gn/T/wicked_pdf20151007-4801-mp6b6i.html\", \"/var/folders/dk/t3scf65x5vx23qq1fsm53s3r0000gn/T/wicked_pdf_generated_file20151007-4801-3bayit.pdf\"]***************"
Rendered job_mailer/send_jobs_email.html.erb within layouts/mailer (0.1ms)
[{"email"=>"vir.jain@gmail.com", "status"=>"sent", "_id"=>"dc93087c39a949de827df06a1edb116e", "reject_reason"=>nil}]
Problem
从输出,我可以看到,我能够正确生成PDF,但由于某种原因,它不是作为附件发送pdf . 它也没有发送电子邮件内容 . 但是,当我从代码中删除附件时,它会正确发送电子邮件内容 .
我确实检查了Rails 3 ActionMailer and Wicked_PDF并尝试了两种解决方案但没有效果 .
我使用的是rails 4.2,ruby 2.1.2,wkhtmltopdf 0.12.2.1(带有补丁的qt) .
任何帮助都非常感谢
更新*******
Controller Method
def email_pdf
@job = Job.find_by_id(params[:id].to_i)
self.instance_variable_set(:@lookup_context, nil)
self.instance_variable_set(:@_lookup_context, nil)
job_pdf = WickedPdf.new.pdf_from_string(render_to_string(:template => 'job/show.pdf.erb', layout: 'mailer.html.erb'))
#job_pdf = WickedPdf.new.pdf_from_string('<h1>Hello There!</h1>')
save_path = Rails.root.join('pdfs','job.pdf')
dir = File.dirname(save_path)
FileUtils.mkdir_p(dir) unless File.directory?(dir)
File.open(save_path, 'wb') do |file|
file << job_pdf
end
JobMailer.send_jobs_email(params[:id].to_i, 'vir.jain@gmail.com', 'Mahavir Jain', save_path).deliver_now
respond_to do |format|
format.json do
render :json => {:success => true}, :status => 200
end
end
end
Mailer Method
def send_jobs_email(job_id, email, name, job_pdf)
@name = name
@job = Job.find_by_id(job_id)
puts 'hello1'
attachments['job.pdf'] = File.read(job_pdf)
puts job_pdf
mail(to: email, subject: 'Job', from: 'info@janatrak.com', from_name: 'JanaTrak Admin')
end
PDF生成正常,我可以看到保存的PDF格式..但不知何故动作管理器不附加PDF以及不显示内容..
我对动作邮件附件有什么遗漏吗?