Rails 5.1 邮件编码错误
Rails 5.1 mailer encoding errors
我正在学习 Hartl Rails 教程 v5.0.1,但在(大概)需要指定编码的 Mailer 测试中卡住了。
相关的测试条款(我在每一行都得到类似的错误):
assert_match user.reset_token, mail.body.encoded
assert_match CGI.escape(user.email), mail.body.encoded
生成的错误消息(截断):
Failure:
UserMailerTest#test_password_reset
[...demo/test/mailers/user_mailer_test.rb:30]:
Expected /6qyclXtvAeFin0htTK7t7g/ to match # encoding: US-ASCII
请注意,我在本地存储库中使用 Rails 5.1.1。邮件程序模板使用默认编码,无论它们是什么。
错误消息包含一长串电子邮件模板;我可以看到 "charset=UTF-8" 和 "Content-Transfer-Encoding: 7bit"。
MailerTest 文件还会检查用户令牌和 CGI 转义电子邮件地址的相同组合,以解决帐户激活测试用例 w/o 问题。
有什么建议吗?到目前为止,Hartl 教程还没有深入探讨编码。
问题是 mail.body
必须是 String
,但你还没有在 password_reset
中设置它。
所以,首先设置它:
def password_reset(user)
@user = user
@body = "My message body"
mail to: user.email, subject: "password reset"
end
其次,在您的模板中使用它。
# password_reset.html.erb
<h1>User#password_reset</h1>
<%= @body %>
# password_reset.text.erb
User#password_reset
<%= @body %>
您会注意到 @greeting
已被删除,我这样做是因为它不再被使用(您将在 @body
中添加您的消息)。
我正在学习 Hartl Rails 教程 v5.0.1,但在(大概)需要指定编码的 Mailer 测试中卡住了。
相关的测试条款(我在每一行都得到类似的错误):
assert_match user.reset_token, mail.body.encoded
assert_match CGI.escape(user.email), mail.body.encoded
生成的错误消息(截断):
Failure:
UserMailerTest#test_password_reset
[...demo/test/mailers/user_mailer_test.rb:30]:
Expected /6qyclXtvAeFin0htTK7t7g/ to match # encoding: US-ASCII
请注意,我在本地存储库中使用 Rails 5.1.1。邮件程序模板使用默认编码,无论它们是什么。
错误消息包含一长串电子邮件模板;我可以看到 "charset=UTF-8" 和 "Content-Transfer-Encoding: 7bit"。
MailerTest 文件还会检查用户令牌和 CGI 转义电子邮件地址的相同组合,以解决帐户激活测试用例 w/o 问题。
有什么建议吗?到目前为止,Hartl 教程还没有深入探讨编码。
问题是 mail.body
必须是 String
,但你还没有在 password_reset
中设置它。
所以,首先设置它:
def password_reset(user)
@user = user
@body = "My message body"
mail to: user.email, subject: "password reset"
end
其次,在您的模板中使用它。
# password_reset.html.erb
<h1>User#password_reset</h1>
<%= @body %>
# password_reset.text.erb
User#password_reset
<%= @body %>
您会注意到 @greeting
已被删除,我这样做是因为它不再被使用(您将在 @body
中添加您的消息)。