我正在尝试对Rails Mailer进行测试,当我尝试匹配的字符串有一些特殊字符或重音时,它总是会中断。
我的测试:
RSpec.describe UsersMailer, :type => :mailer do
let(:mail) { UsersMailer.create(@user) }
it 'includes first_name' do
expect(mail.body.encoded).to match("#{HTMLEntities.new.encode('Félix', :named)}")
end
end
我的电子邮件视图:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
</head>
<body>
<%= "#{HTMLEntities.new.encode(@user.first_name, :named)}" %>
</body>
</html>
它们之间的区别:
测试:Félix
查看: F&eacute;lix
当我在没有 HTML 的情况下执行此操作时,我的区别是:
测试:Félix
查看: F=C3=A9lix
我正在使用 Rails 4.2.rc1,不知道这是否有任何区别。
解决了!刚刚在我的电子邮件视图中添加了一条html_safe:
<%= "#{HTMLEntities.new.encode(@user.first_name, :named).html_safe}" %>
忘了。