将view_context发送给Rraw Task for Prawn PDF

时间:2014-06-29 11:15:31

标签: ruby-on-rails pdf rake prawn viewcontext

我试图创建一个rake任务来向某些用户发送电子邮件(用于cron作业)。

在应用程序中,所有函数都可以正常工作,但在rake任务中,我无法将view_context发送到Prawn对象来呈现PDF。我在Prawn中使用view_context来获取用户名和帮助程序类。

遵循以下代码:

佣金任务:

task :view_missing_emails => :environment do
  User.all.each do |user| 
    LetterMailer.attached_pdf(user.email, view_context).deliver
end

LetterMailer代码:

class LetterMailer < ActionMailer::Base
  default from: "test@example.com"

  def attached_pdf(email, view)
    @email = email
    @view = view
    attachments["Letter.pdf"] = LetterPdf.new(@email, @view).render
  end
end

LetterPdf代码:

class LetterPdf < Prawn::Document
  def initialize(email, view)
    @email = email
    @view = view

    if @view.current_user.user_permission.admin?
      text "You are an admin"
    else
      text "You are NOT an admin"
    end

    text "Your email is: #{@email}"
  end

(current_user是一个Devise方法)

正如我所说,在网页上运行应用程序,一切正常。但在Rake任务中我收到以下错误:

rake aborted!
undefined local variable or method `view_context' for main:Object

有关如何将view_context传递给Rake Task的任何想法,或者,如果有另一种更智能的方法来呈现PDF,使用视图和控制器帮助方法,而不必发送view_context?

谢谢!

0 个答案:

没有答案