我是新手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
任何想法我做错了什么以及导致这个错误的原因是什么?
答案 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)