【问题标题】:Sending Pdf via email in Rails在 Rails 中通过电子邮件发送 Pdf
【发布时间】:2017-02-21 04:36:05
【问题描述】:

emp_ids = params[:employee_ids]

我正在 Rails 中的一个项目中工作,我有一个员工列表页面,此列表是员工的薪水单列表。在该列表中,我应用了复选框,底部有一个发送按钮。我想要那个如果我选择多个复选框,电子邮件应该发送给所有员工,包括工资单的 pdf。如果我选​​择复选框,点击提交我选择的员工的所有工资单,我就可以做到这一点。 pdf页面我无法应用电子邮件功能,所以我希望它直接发生。我使用了邪恶的pdf和actionmailer,但我很困惑如何发送多个员工ID的数组(就像我在我的索引页中写的那样[employee_ids] 并使用控制器中的 params[:employee_ids] 访问它)到 Action Mailer 以发送电子邮件。

【问题讨论】:

  • 当你检查每个被检查的员工的工资时,他/她的工资单是邮寄的吗?
  • 是的...我希望在我使用复选框选择的每个员工的电子邮件中使用它。我也在 ActionMailer 中写过,但我知道我可以在电子邮件中呈现这么多 pdf。
  • 有谁知道我怎样才能实现这个功能???我急需....
  • 为什么不遍历employee_ids 数组并为每个人发送一封邮件?由于电子邮件内容不同,您不能只说 ActionMailer 向具有不同内容的不同员工发送一封电子邮件。如果内容相同,您当然可以同时将一封电子邮件发送给所有不同的员工。所以你为什么不直接使用类似的东西:params[:employee_ids].each {|employee_id| YourSalaryMailer.send_salary_pdf(employee_id).deliver_now }
  • 好的,我试试……谢谢回复……!!!!!!

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


【解决方案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”的文件夹,并在员工目录下创建一个名为“pdf.html.erb”的文件。

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

希望对你有帮助

【讨论】:

  • 存储生成的pdf文件,你可以存储在任何你喜欢的地方
  • [4834, 5152, 5151, 5151, 5159, 5162, 5151, 5151, 5138, 5003, 4843, 5112, 4609, 4629, 5166, 4904, 4815, 4899, 47474 ,4699、4699、4608、4969、4898、5125、4856、4922、4880、4880、5079、4673、4889、4889、4889、4780 , 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]
  • 这是我的数组....我想计算数组中的重复元素并显示该元素重复了多少次...意味着 5151 重复了 2 次。所以它必须显示 5151=2
  • 结果 = array.each_with_object(Hash.new(0)) { |key,counts|计数[键] += 1 }
  • 它在散列中...... ......
猜你喜欢
  • 2018-09-19
  • 2011-03-21
  • 2015-06-21
  • 2023-03-10
  • 2013-10-10
  • 1970-01-01
  • 2021-12-18
  • 2011-08-20
  • 1970-01-01
相关资源
最近更新 更多