由于某种原因,我的实例变量未在此ActionMailer中设置。其他ActionMailers似乎工作正常。可能导致这种情况的任何想法? UserMailer是一个限制词perpahps吗?
使用rails 3.1
# app/mailers/user_mailer.rb
class UserMailer < ActionMailer::Base
default from: 'My Name <myname@example.com>'
def registration_confirmation(user)
# Don't send email if we don't have an email address to send it to or the user is already confirmed
return unless user and user.email and not user.confirmed_at
# Set global variable for mail view
@my_message = 'Hello world!'
# Send email
mail(to: "#{user.name} <#{user.email}>", subject: 'Please confirm your email address')
end
end
# app/views/user_mailer/registration_confirmation.text.erb
Hello who? <%= @my_message %> # Simply returns 'Hello who? '
答案 0 :(得分:1)
原来这一行:
return unless user and user.email and not user.confirmed_at
没有中止发送电子邮件。相反,它只是中止您在上面看到的UserMailer代码并直接进入视图,该视图现在指的是尚未设置的实例变量。所以从本质上讲,ActionMailer的工作方式与常规控制器完全相同。
要解决此问题,我已经调整了检查是否将电子邮件发送到运行UserMailer命令的位置的条件。
答案 1 :(得分:0)
您必须重新启动服务和工作人员(如果有)以反映更改。