ruby-on-rails – 在Forgot密码上设计路由错误
发布时间:2020-12-16 23:30:24 所属栏目:百科 来源:网络整理
导读:当我点击%= link_to“忘记密码?”,new_password_path(resource_name)% 它需要我 http://0.0.0.0:3000/users/password/new 与路由错误 ActionController::RoutingError in Devise/passwords#newShowing app/views/devise/passwords/new.html.erb where lin
|
当我点击<%= link_to“忘记密码?”,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}
编辑: new.html.erb此行出错 <%= 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
解决方法
我想你在routes.rb中缺少这一行
devise_for :users 如果这对您没有帮助,那么我建议您遵循这两个railscast: > http://railscasts.com/episodes/209-introducing-devise 你会在那里找到所有必要的信息. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
