我的user_mailer.rb:
class UserMailer < ActionMailer::Base
default :from => "notifications@example.com"
def welcome_email(user)
@user = user
@url = "http://example.com/login"
mail(:to => user.email,:subject => "Welcome to My Awesome Site") do |format|
format.html
end
end
end
这就是我的user_mailer.html.erb的样子:
<!DOCTYPE html>
<html>
<body>
<%= yield %>
</body>
</html>
我可以在user_mailer.html.erb中访问哪些内容。 我在哪里需要定义环境变量,以便我可以在这里访问它?
答案 0 :(得分:1)
我猜你是从here开始的?
您可以将user_mailer.html.erb
视为视图,user_mailer.rb
视为其控制器。因此,如果您已定义了实例变量@users
,那么您可以在邮件中使用它。根据链接中的示例:
user_mailer.html.erb
<!DOCTYPE html>
<html>
<head>
<meta content="text/html; charset=UTF-8" http-equiv="Content-Type" />
</head>
<body>
<h1>Welcome to example.com, <%= @user.name %></h1>
<p>
You have successfully signed up to example.com,
your username is: <%= @user.login %>.<br/>
</p>
<p>
To login to the site, just follow this link: <%= @url %>.
</p>
<p>Thanks for joining and have a great day!</p>
</body>
</html>
您也可以使用帮助程序,因此没有理由像这样对URL进行硬编码,而是可以使用sign_in_url
(或者您对登录路径的任何路径)。
请注意,在电子邮件中,您应始终使用something_url
而不是something_path
(因此root_url
等)。
您应该使用welcome_email
方法定义变量:
def welcome_email(user)
@user = user
@time = Time.now
@slogan = "My App's slogan"
...
mail(:to => user.email,:subject => "Welcome to My Awesome Site") do |format|
format.html
end
end
答案 1 :(得分:0)
您可以访问视图部件中的任何实例变量。所以在你的情况下,
@user and @url are accessible in user_mailer.html.erb