2011-09-13 13 views
6

जब मैं क्लिक <%= link_to "Forgot your password?", new_password_path(resource_name) %>वसीयत पासवर्ड भूल पर त्रुटि मार्ग

पर यह मार्ग त्रुटि के साथ

http://0.0.0.0:3000/users/password/new

करने के लिए मुझे ले जाता है

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} 

संपादित करें:

इस लाइन

<%= 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 

उत्तर

4

मुझे लगता है कि आप routes.rb

devise_for :users 

तो में इस लाइन याद कर रहे हैं पर new.html.erb त्रुटि यह आपकी मदद नहीं करता है तो मैं इन दो रेलवे का पालन करने की अनुशंसा करता हूं:

आप सभी आवश्यक जानकारी मिल जाएगा।

+0

प्रतिक्रिया के लिए धन्यवाद, लेकिन अभी भी एक ही मार्ग देता है त्रुटि। कोई मार्ग मिलान नहीं है {: नियंत्रक => "उपयोगकर्ता",: क्रिया => "पासवर्ड",: id =>: उपयोगकर्ता} – ahmet

+1

क्या आप सुनिश्चित हैं कि resource_name शून्य नहीं है? क्या आप मुझे इस दृश्य को प्रस्तुत करने के लिए जिम्मेदार ऐप/विचार/devise/passwords/new.html.erb और नियंत्रक कार्रवाई की गलत पंक्ति दिखा सकते हैं? –

+0

बदले गए दृश्य और नियंत्रक को जोड़ा गया – ahmet

4

मैं एक समान मुद्दे में भाग गया। मैं अपने उपयोगकर्ता मॉडल में recoverable मॉडल याद आ रही थी:

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

एक बार मैं :recoverable जोड़ा मुझे याद आ पासवर्ड मार्गों देखा जब मैं 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 
संबंधित मुद्दे