質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

i18n

i18n(Internationalization)とは、ユーザーの国や文化によってソフトウェアの反応を変えることで国際化を図るテクニックやツールのことを言います。

Q&A

解決済

2回答

1473閲覧

ビューのテンプレートに日本語を使うとエラー

pecchan

総合スコア555

Cloud9

Cloud9は、クラウドからのプログラミングが可能になるWebサービス。IDEとしての機能が搭載されており、GitHubやHerokuなど他ツールとの連携も可能です。ブラウザ上で動くため、デバイスに関係なく開発環境を準備できます。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

i18n

i18n(Internationalization)とは、ユーザーの国や文化によってソフトウェアの反応を変えることで国際化を図るテクニックやツールのことを言います。

0グッド

0クリップ

投稿2020/05/12 23:36

編集2020/05/12 23:44

ruby on railsチュートリアル、11章のメールを送信を勉強してます。

ビューのテンプレートについてです。

チュートリアルは英語ですが、これを日本語に変えるとテスト(rspec)が最初のexpectからエラーになりました。

以下の<p>で囲った部分が英語だとエラーになりません。

/app/views/user_mailer/account_activation.html.erb

ruby

1<h1>Sample App</h1> 2 3<p>Hi <%= @user.name %>,</p> 4 5<p> 6ようこそ!以下のリンクをクリックして、アカウントを有効にしてください: 7</p> 8 9<%= link_to "アカウントを有効にする", edit_account_activation_url(@user.activation_token, 10 email: @user.email) %>

/spec/mailers/user_mailer_spec.rb

ruby

1require "rails_helper" 2 3RSpec.describe UserMailer, type: :mailer do 4 5 let(:user){FactoryBot.create(:user)} 6 7 describe "account_activation" do 8 9 let(:mail) { UserMailer.account_activation(user) } 10 11 it "renders the body" do 12 expect(mail.body.encoded).to match(user.name) 13 expect(mail.body.encoded).to match(user.activation_token) 14 expect(mail.body.encoded).to match(CGI.escape(user.email)) 15 end 16 17 end 18 19 20 21end 22

エラーメッセージ
イメージ説明

試しに、以下を参考にrailsを日本語設定にしましたが、現状変わらずです。
[初学者]Railsのi18nによる日本語化対応
設定した2点
・config.i18n.default_locale = :ja
・gem 'rails-i18n'をインストール

どうすればテンプレートで日本語を使えるようになるのでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

これを日本語に変えるとテスト(rspec)が最初のexpectからエラーになりました。

エラーメッセージのとおりです。mail.body.encodedはその名の通りエンコードされていますので、生の日本語のユーザー名とは一致しません。

どうすればテンプレートで日本語を使えるようになるのでしょうか?

あくまでテストの側の問題で、メールそのものに問題はないかと思われます。

投稿2020/05/13 00:08

maisumakun

総合スコア145184

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

pecchan

2020/05/13 00:40

有難う御座います。 encodedを使わず mail.bodyとしたところエラー内容が変わりました。 調べてみます。 expected #<Mail::Body:0x0000000006cb9750 @boundary="--==_mimepart_5ebb41e5c5d0f_2457f1f9a0706ae", @preamble=ni...xt/html>, <Content-Transfer-Encoding: base64>>], @raw_source="", @ascii_only=true, @encoding="7bit"> to match "大野 智子" Diff: @@ -1,2 +1,13 @@ -"大野 智子"
guest

0

自己解決

過去ログにありました

https://teratail.com/questions/221420

ただし、上記の質問者さんと同じく、なぜこれで通るか理解できてません。

投稿2020/05/13 05:26

pecchan

総合スコア555

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問