2017-02-21 55 views
2

通过电子邮件发送PDF格式在Rails的

emp_ids = params[:employee_ids]

我在轨道在那里我有一个员工列表页的一个项目工作,该清单是employee.In的Salaryslip的列表名单上有应用复选框,并在底部有一个发送按钮。我希望如果我选择多个复选框,电子邮件应该去所有员工,包括工资slip.I能够做到这一点,如果我选择复选框点击提交所有的薪水滑来为我已经选择,但在该PDF页我不能应用电子邮件功能的员工,所以我希望它是直接发生。我已经使用邪恶的pdf和actionmailer,但我很困惑我怎么可以发送一个由多个员工id组成的数组(像我这样写在我的索引页[employee_ids]中,并使用控制器中的params [:employee_ids]访问它)发送给Action Mailer以发送电子邮件。

+0

当你检查每个被检查的雇员在邮件中获得工资时,他/她的工资单是正确的吗? –

+0

是的......我希望在每个员工的电子邮件中使用checkbox.I也写在ActionMailer中,但sdon知道我可以在电子邮件中渲染如此多的pdf。 –

+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 

你需要创建一个文件夹,名为“PDF文件”到公共目录和一个文件名员工目录下名为“pdf.html.erb”。

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

希望它能帮助你

+0

但为什么需要在公共场合创建pdf文件夹???????? –

+0

来存储生成的pdf文件,您可以存储您喜欢的任何地方 –

+0

[4834,5152,5151,5151,5159,5162,5151,5151,5138,5003,4843,5112,4609,4629,5166,4904,4815,4899 ,4738,4675,4724,4699,4699,4608,4969,4898,5125,4856,4922,4880,4880,5079,4673,4889,4889,4780,4902,4691,4939,4791,4631,5025,4647 ,4922,4906,4952,4911,4882,4732,5127,4787,4733,4915,5151,5151,4839,5021,4937,4809,4840,5097,4776,4855,4864,4864,4735,4716,4921 ,4985,4977,5125,4701,4783,4744,4792,5166,4963,4904,4978,4899,4759] –

相关问题