邮件程序预览:未定义的局部变量或方法

时间:2015-07-06 17:40:29

标签: ruby-on-rails ruby

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

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

在test / mailers / previews / invitation_mailer_preview.rb中,我有以下方法。错误消息指向invitation =行。 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

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

2 个答案:

答案 0 :(得分:3)

where子句需要传递散列。

要查找包含nil电子邮件的邀请:

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

要查找发出nil电子邮件的邀请:

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

相当于:

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

答案 1 :(得分:0)

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