■ エラー内容
NoMethodError in PasswordResets#create
undefined method `edit_password_reset_url' for #<#Class:0x0000000b148330:0x00000007cf24c8>
<%= link_to "Reset password", edit_password_reset_url(@user.reset_token, email: @user.email) %>
Request
Parameters:
{"utf8"=>"✓", "authenticity_token"=>"Scf9xTMpUoJLpj5dQXaS0DDy3ZBFiH9AwmLiSppxk8vwpB64ZuwX4SQ+oLGo64h6PQvgagU/cpfQHOLytiK3Cg==", "email"=>"hogehoge@fugagufa.jp"}
■やりたいこと
トークンを作成して、パスワードのリセットメールを送信する。
恐らくは、PasswordResets#create内に
edit_password_reset_urlのメソッドがないことによるエラーだとは思うのですが・・・
上記エラーの原因が分からず手詰まりです。もしお分かりになる方がいましたら教えてください。
password_resets_contoroller.rb def create @user = User.find_by(email: params[:email].downcase) if @user @user.create_reset_digest @user.send_password_reset_email render("password_resets/new") else render("password_resets/new") end end
user.rb attr_accessor :reset_token def User.digest(string) cost = ActiveModel::SecurePassword.min_cost ? BCrypt::Engine::MIN_COST : BCrypt::Engine.cost BCrypt::Password.create(string, cost: cost) end def User.new_token SecureRandom.urlsafe_base64 end 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
user.mailer.rb def password_reset(user) @user = user mail to: user.email, subject: "ほげほげ" end
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/05/19 01:33