在Rails中通过电子邮件发送Pdf

时间:2017-02-21 04:36:06

标签: ruby-on-rails-4 actionmailer wicked-pdf



emp_ids = params[:employee_ids]




我正在使用rails中的一个项目,我有一个Employee List页面,这个列表是一个雇员的Salaryslip列表。在该列表中我已经应用了复选框,在底部有一个Send按钮。我想要那个如果我选择多个复选框,电子邮件应该转到所有员工,包括工资单的pdf。我能够这样做,如果我选择复选框点击提交所有salaryslip来为我选择但在那里的员工pdf页面我不能应用电子邮件功能,所以我希望它直接发生。我使用过wicked pdf和actionmailer但是我很困惑如何发送多个员工ID的数组(就像我写的那样)在我的索引页[employee_ids]中,并使用控制器中的params [:employee_ids]访问它,以便Action Mailer发送电子邮件。

1 个答案:

答案 0 :(得分:1)

试试这个,

def generate_slip
  employees = Employee.where(id: emp_ids)
  employees.each do |employee|
   @employee = employee
   pdf_name = employee.name + Date.today.to_s
   pdf = render_to_string pdf: "pdf.html.erb", template: "employees/pdf.html.erb", layout: 'layouts/pdf', encoding: "UTF-8"
   file_path = Rails.root.join('pdfs',"#{pdf_name}.pdf")
   File.open(save_path, 'wb') do |file|
     file << pdf
   end
   UserMailer.send_file(to: employee.email, subject: "Slip")
  end 
end

您需要在公共目录中创建一个名为“pdfs”的文件夹,并在employees目录下创建一个名为“pdf.html.erb”的文件。

所有实例变量都可用于pdf.html.erb文件。

希望它能帮到你