ぞえの技術めも

Ruby on Rails勉強中

【124日目】【1日20分のRailsチュートリアル】【第10章】アカウント有効化メールのビューを作成する

Ruby on Railsチュートリアル(第3版)

今日は「10.1.2 AccountActivationsメイラーメソッド」のメールにアカウント有効化リンクを追加するところから。

10.1.2 AccountActivationsメイラーメソッド

ここでは挨拶文にユーザー名を含め、カスタムの有効化リンクを追加します。
この後、Railsサーバーでユーザーをメールアドレスで検索して有効化トークンを認証できるようにしたいので、リンクにはメールアドレスとトークンを両方含めておく必要があります。

account_activations/q5lt38hQDc_959PVoo6b7A/edit?email=foo%40example.com

こんな感じでURLにトークンとメールアドレスを含めておくようにする。

ここまでできれば、リスト10.11で定義した@userインスタンス変数、editへの名前付きルート、ERBを組み合わせて、必要なリンクを作成できます (リスト10.12リスト10.13)。

○テキストビュー

app/views/user_mailer/account_activation.text.erb

Hi <%= @user.name %>,

Welcome to the Sample App! Click on the link below to activate your account:

<%= edit_account_activation_url(@user.activation_token, email: @user.email) %>

○HTMLビュー

app/views/user_mailer/account_activation.html.erb

<h1>Sample App</h1>

<p>Hi <%= @user.name %>,</p>

<p>
Welcome to the Sample App!Click on the link below to activate your account:
</p>

<%= link_to "Activate", edit_account_activation_url(@user.activation_token,
                                                    email: @user.email) %>

今更だけどテキストビューとHTMLビューがあるのは送り先によってテキストメール送るかHTMLメールで送るか違うからなのかな。

リスト10.12やリスト10.13で定義したテンプレートの実際の表示を簡単に確認するために、メールプレビューという裏技を使ってみましょう。

へー、そんな機能が。動作確認のために実際にメール送らないといけないのかと思ってた。

これを利用するには、アプリケーションのdevelopment環境の設定に手を加える必要があります (リスト10.14)。

元々あったconfig.action_mailer.raise_delivery_errors = falseは削除した。

config/environments/development.rb

  :
  # Don't care if the mailer can't send.
  config.action_mailer.raise_delivery_errors = true
  config.action_mailer.delivery_method = :test
  host = 'rails-tutorial-c9-mhartl.c9.io'
  config.action_mailer.default_url_options = { host: host }
  :

今日の学習時間は【25分】

次は「10.1.2 AccountActivationsメイラーメソッド」のUserメイラーのプレビューファイルの更新をするところから。

ここまで来ると1項が長いね…。