将变量传递给 Rails 邮件程序

Passing Variable into Rails Mailer

嗨,Stack 用户,

我已经被这个问题困扰了大约两个小时,不知道我做错了什么。我在 User 的更新操作上调用方法 send_intro_emailsend_intro_email 方法调用名为 intro_email(user).

NotificationMailer 方法

我遇到的问题是 user 的数据一直传递到 .erb 电子邮件中使用它的位置。我测试了它,它实际上正在通过,但不知道为什么我不能在电子邮件本身中使用它。

文件:

notificaion_mailer.rb

def intro_email(user)
   puts user # works
   mail(to: "email", from: "email2", subject: "THIS IS A TEST")
end

User.rb

def send_intro_email 
  NotificationMailer.intro_email(self).deliver
end

intro_email.erb

The users name is <%= user.name %>.

如果需要,我可以稍后在我的另一台 PC 上显示错误消息。非常感谢您的帮助。

好吧,您正在使用局部变量 user,它的作用域仅限于您定义的方法。您必须使用实例变量 @user 作为示例。所以要像这样进行更改:

def intro_email(user)
   @user = user
   mail(to: "email", from: "email2", subject: "THIS IS A TEST")
end

然后在视图中使用 @user。喜欢

The users name is <%= @user.name %>.