我使用bcrypt-ruby进行密码加密。在gem http://bcrypt-ruby.rubyforge.org/的文档中,他们提供了允许某人重置密码的操作。我正在尝试实施此操作。
我在登录页面上添加了以下代码:
<p>Forgot your Password? <%= link_to "Click to reset your password", forgot_password_session_path, confirm: "Do you really want to reset your password?" %></p>
以下是我的sessions_controller.rb文件中的代码:
def forgot_password
random_password = Array.new(10).map { (65 + rand(58)).chr }.join
case
when User.find_by_email(params[:session][:email_user])
user = User.find_by_email(params[:session][:email_user])
when User.find_by_username(params[:session][:email_user])
user = User.find_by_username(params[:session][:email_user])
end
user.password = user.password_confirmation = random_password
user.save!
Mailer.create_and_deliver_password_change(user, random_password)
end
以下是config / routes.db中的定义:
resources :sessions do
member do
get "forgot_password"
end
end
以下是佣金路线的输出:
forgot_password_session GET /sessions/:id/forgot_password(.:format) sessions#forgot_password
当我尝试点击登录链接上的链接时,出现以下错误:
没有路线匹配{:action =&gt;“forgot_password”,:controller =&gt;“sessions”}
我不知道它看起来是怎么回事。我重新启动了我的rails服务器&amp; spork但仍然得到错误。我不知道下一步。
任何帮助将不胜感激。
Update 5/26/2012 GMT-6上午9:14:
我改为POST,重启了我的rails服务器&amp;叉勺。我得到了同样的错误。这是我在服务器上的日志:
在2012-05-26 09:13:36 -0500开始获取127.0.0.1的“/ login” 由SessionsController处理#new为HTML 在布局/应用程序中渲染会话/ new.html.erb(112.4ms) 在116ms完成500内部服务器错误
以下是佣金路线信息:
forgot_password_session POST /sessions/:id/forgot_password(.:format) sessions#forgot_password
答案 0 :(得分:0)
它可能需要是POST请求。当我参加rails类时,内联链接调用是不一致的。您遇到该错误的原因是您的路由文件是为GET配置的,而不是POST。只是在黑暗中拍摄,但尝试添加相同的行,但使用POST。