【问题标题】:Mailer preview: Undefined local variable or method邮件预览:未定义的局部变量或方法
【发布时间】:2015-07-07 01:46:36
【问题描述】:

我是一名 Rails 程序员新手,正在尝试设置邮件预览,但在访问服务器上的预览时出现错误:

undefined local variable or method `email' for #<InvitationMailerPreview:0x000000051a77c8>

在 test/mailers/previews/invitation_mailer_preview.rb 我有下面的方法。错误消息指向invitation = 行。邀请表确实包含一个名为 email 的列。

def invitation
  invitation = Invitation.where(email != nil).first
  InvitationMailer.invitation_verified(invitation)
end

在 app/mailers/invitation_mailer.rb(本帖的缩写)中:

def invitation(invitation)
  @invitation = invitation
  mail to: invitation.invitee.email
end

任何想法我做错了什么以及导致此错误的原因是什么?

【问题讨论】:

    标签: ruby-on-rails ruby


    【解决方案1】:

    where 子句需要传递一个哈希值。

    要查找具有nil 电子邮件的邀请:

    invitation = Invitation.where(email: nil).first
    

    要查找没有nil电子邮件的邀请:

    invitation = Invitation.where.not(email: nil).first
    

    相当于:

    invitation = Invitation.where('email IS NOT NULL').first
    

    【讨论】:

      【解决方案2】:

      Invitation.where(email != nil) 无效。您应该将其更改为:Invitation.where.not(email: nil)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2017-01-26
        • 2018-04-19
        • 2015-01-01
        • 2013-12-17
        • 2016-04-29
        相关资源
        最近更新 更多