2017-06-02 8 views
0

私はHartl Railsチュートリアルv5.0.1に従っていて、(おそらく)指定されたエンコーディングが必要なメーラーテストにはまっています。Rails 5.1メーラエンコーディングエラー

関連試験句(私はどちらかのライン上で同様のエラーを取得する):

assert_match user.reset_token, mail.body.encoded 
assert_match CGI.escape(user.email), mail.body.encoded 

結果のエラーMSG(切り捨て):

Failure:  
UserMailerTest#test_password_reset  
[...demo/test/mailers/user_mailer_test.rb:30]:  
Expected /6qyclXtvAeFin0htTK7t7g/ to match # encoding: US-ASCII 

私はRailsの5.1を使用していますのでご注意ください。私の地元のレポで1。メーラー・テンプレートは、デフォルトのエンコードを使用しています。

エラーmsgには、電子メールテンプレートの長い文字列が含まれています。私は "charset = UTF-8"と "Content-Transfer-Encoding:7bit"を見ることができます。

MailerTestファイルでは、アカウントの有効化テストケースの有無にかかわらず、ユーザートークンとCGIエスケープ電子メールアドレスの同じ組み合わせがチェックされます。

提案がありますか? Hartlのチュートリアルでは、この時点までのエンコーディングについては解説していません。

+0

あなたがテストしているメーラーファイル(私はそれが 'user_mailer.rb'と仮定します)とそのテンプレート(例えば' some_mail.html.erb'と 'some_mail.txt.erb')を共有してください。 – Gerry

+0

https://pastebin.com/67GS6Rwg –

+0

質問を編集し、外部リンクを提供するのではなく、コードを追加する方が良いです。 – Gerry

答えて

0

mail.bodyStringである必要がありますが、まだpassword_resetに設定していないという問題があります。

だから、それを最初に設定します。

def password_reset(user) 
    @user = user 
    @body = "My message body" 

    mail to: user.email, subject: "password reset" 
end 

そして、第二、あなたのテンプレートでそれを使用します。 (あなたが@bodyにメッセージが追加されます)が使用されていない長いため

# password_reset.html.erb 
<h1>User#password_reset</h1> 
<%= @body %> 

# password_reset.text.erb 
User#password_reset 
<%= @body %> 

あなたは@greetingが除去されたことがわかります、私はそのようにしました。

+0

が完了しました。ありがとうございました! –

関連する問題