【问题标题】:Actionmailer - Undefined `User' - PDF AttachmentActionmailer - 未定义的“用户” - PDF 附件
【发布时间】:2013-03-06 00:46:28
【问题描述】:

我正在尝试将我的 PDF 附加到电子邮件中。但是,当我单击链接时,我收到以下错误 undefiined method 'user' 我有以下设置:

控制器

 def index
    @hospital_bookings = HospitalBooking.scoped
    hospital_booking = @hospital_bookings
    @user = User.all

    if params[:format] == "pdf"
      @hospital_bookings = @hospital_bookings.where(:day => Date.today.beginning_of_month..Date.today.end_of_month)
    end

    respond_to do |format|
      format.html
      format.pdf do
        render :pdf => "#{Date.today.strftime("%B")} Overtime Report",
               :header => {:html => {:template => 'layouts/pdf.html.erb'}}
        OvertimeMailer.overtime_pdf(hospital_booking).deliver
      end
    end
  end

overtime_mailer.rb

class OvertimeMailer < ActionMailer::Base

  default :from => DEFAULT_FROM

  def overtime_pdf(hospital_booking)
    @hospital_bookings = hospital_booking
    attachments["Overtime Report.pdf"] = WickedPdf.new.pdf_from_string(
        render_to_string(:pdf => "Overtime Report",:template => 'layouts/pdf.html.erb'))
    mail(:to => hospital_booking.user.email, :subject => "Overtime Report")
  end
end

错误发生在以下行mail(:to =&gt; hospital_booking.user.email, :subject =&gt; "Overtime Report"

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 wicked-pdf


    【解决方案1】:

    hospital_booking 在此代码上

    OvertimeMailer.overtime_pdf(hospital_booking).deliver
    

    是一个ActiveRecord::Relation 对象。您可能想在控制器中调用 HospitalBooking.scoped.first 或只是 HospitalBooking.first

    【讨论】:

    • 所以实际上唯一需要更改的是 HospitalBooking.scopedHospitalBooking.scoped.first 尽管如果我应用您的更改,这会导致其他错误
    • 但是当你第一次编码时应该是这样的。您只需要继续修复错误,直到它起作用。我们已经解决了您在这个问题中遇到的错误。您可以更新您的问题以包含您遇到的其他错误,我们会看看我们能做些什么来提供帮助,但请先尝试解决它。​​
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多