I need h...">

Submit a routing error to Forgot your password

When I click <%= link_to "Forgot your password?", new_password_path(resource_name) %>

I need

http://0.0.0.0{000/users/password/new

with routing error

 ActionController::RoutingError in Devise/passwords#new Showing app/views/devise/passwords/new.html.erb where line #3 raised: No route matches {:controller=>"users", :action=>"password", :id=>:user} 

Edit:

new.html.erb Error in this line

 <%= form_for(resource, :as => resource_name, :url => password_path(resource_name), :html => { :method => :post }) do |f| %> 

Passwords_controller.rb

 class Devise::PasswordsController < ApplicationController #prepend_before_filter :require_no_authentication include Devise::Controllers::InternalHelpers access_control do allow all end # GET /resource/password/new def new build_resource({}) render_with_scope :new end # POST /resource/password def create self.resource = resource_class.send_reset_password_instructions(params[resource_name]) if successful_and_sane?(resource) set_flash_message(:notice, :send_instructions) if is_navigational_format? respond_with({}, :location => after_sending_reset_password_instructions_path_for(resource_name)) else respond_with_navigational(resource){ render_with_scope :new } end end # GET /resource/password/edit?reset_password_token=abcdef def edit self.resource = resource_class.new resource.reset_password_token = params[:reset_password_token] render_with_scope :edit end # PUT /resource/password def update self.resource = resource_class.reset_password_by_token(params[resource_name]) if resource.errors.empty? set_flash_message(:notice, :updated) if is_navigational_format? sign_in(resource_name, resource) respond_with resource, :location => redirect_location(resource_name, resource) else respond_with_navigational(resource){ render_with_scope :edit } end end protected # The path used after sending reset password instructions def after_sending_reset_password_instructions_path_for(resource_name) new_session_path(resource_name) end end 
+6
source share
2 answers

I think you are missing this line in routes.rb

 devise_for :users 

If this does not help you, I recommend following these two railscasts:

Here you will find all the necessary information.

+4
source

I had a similar problem. I could not find the recoverable model in my user model:

  class User
   devise: database_authenticatable,
          : registerable,
          : validatable,
          : recoverable
 end

As soon as I added :recoverable , I saw the missing password routes when I ran rake routes :

  user_password POST /users/password(.:format) devise/passwords#create new_user_password GET /users/password/new(.:format) devise/passwords#new edit_user_password GET /users/password/edit(.:format) devise/passwords#edit PUT /users/password(.:format) devise/passwords#update 
+4
source

Source: https://habr.com/ru/post/897228/


All Articles