・やりたいこと
送信されたメールのリンクを開けるようにしたい
・状況
railsチュートリアル12章のメール再設定機能を実装していてメールは送信されるがリンクをタップするとエラーになる
ローカルで確認すると以下の画面になる
heroku ↓
app/controllers/password_resets_controller.rb
class PasswordResetsController < ApplicationController before_action :get_user, only: [:edit, :update] before_action :valid_user, only: [:edit, :update] before_action :check_expiration, only: [:edit, :update] def new end def edit end def create @user = User.find_by(email: params[:password_reset][:email].downcase) if @user @user.create_reset_digest @user.send_password_reset_email flash[:info] = "パスワード再設定メールが送信されました" redirect_to root_url else flash.now[:danger] = "メールアドレスが見つかりません" render 'new' end end def update if params[:user][:password].empty? @user.errors.add(:password, :blank) render 'edit' elsif @user.update_attributes(user_params) log_in @user flash[:success] = "パスワードがリセットされました。" redirect_to @user else render 'edit' end end private def user_params params.require(:user).permit(:password, :password_confirmation) end def get_user @user = User.find_by(email: params[:email]) end # 正しいユーザーかどうか確認する def valid_user unless (@user && @user.activated? && @user.authenticated?(:reset, params[:id])) redirect_to request.referer end end # トークンが期限切れかどうか確認する def check_expiration if @user.password_reset_expired? flash[:danger] = "Password reset has expired." redirect_to new_password_reset_url end end end
test/mailers/previews/user_mailer_preview.rb
def password_reset user = User.first user.reset_token = User.new_token UserMailer.password_reset(user) end
user.rb
attr_accessor :remember_token, :reset_token ・・ # パスワード再設定の属性を設定する def create_reset_digest self.reset_token = User.new_token update_attribute(:reset_digest, User.digest(reset_token)) update_attribute(:reset_sent_at, Time.zone.now) end # パスワード再設定のメールを送信する def send_password_reset_email UserMailer.password_reset(self).deliver_now end
コードも見直してみましたが原因がわかりませんでした
リンクを開けるようにするにはどのように改善したらいいか教えていただけませんか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。