发送邮件后从视图访问"self"(Ruby on Rails)



用户注册(Devise RegistrationController(后,我想给他们发一封欢迎电子邮件。

在我的用户模型中,我创建了一个函数:

def send_welcome_email
UserMailer.welcome(self).deliver
end

然后我添加了after_create :send_welcome_email

在电子邮件视图中,我需要访问变量。

<p><span><strong>Hi <%= self.name %>,</strong></span></p>

返回错误:

undefined method `name' for #<#<Class:0x00007fa7d18e13b0>:0x00007fa7e4025358>

这会导致上面的错误,这是有道理的,但我不确定如何访问(刚刚创建的(模型中的变量。

我一直在关注这个问题:https://stackoverflow.com/a/17480095/9200273

欢迎方式:

def welcome(user)
mail(
to: user.email,
subject: 'Welcome to Site!',
from: "support@site.com"
)
end

您可以使用with方法将对象传递给Mailer类,如下所示:

UserMailer.with(user: self).welcome.deliver

UserMailer类内部:

def welcome_email
@user = params[:user]
...
end

视图中:

<%= @user.name %>

参考:https://guides.rubyonrails.org/action_mailer_basics.html

最新更新