我正在使用bcrypt-ruby进行密码加密。在宝石http://bcrypt-ruby.rubyforge.org/的文档中,他们提供了一个操作来允许某人重置密码。我正在尝试执行此操作。如何使用Ruby on Rails link_to与控制器中的方法
我下面的代码添加我的登录页面上:
<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
这里是配置/ routes.db的定义:
resources :sessions do
member do
get "forgot_password"
end
end
下面是从耙路线的输出:
forgot_password_session GET /sessions/:id/forgot_password(.:format) sessions#forgot_password
当我尝试点击链接,在我的登录链接,我得到以下错误:
没有路由匹配{:动作=>“forgot_password”:控制器=>“会话”}
我不知道它是如何表示没有路线匹配时,它似乎。我重新启动了我的导航服务器& spork,但仍然出现错误。我不知道下一步。
任何帮助将不胜感激。
更新2012年5月26日上午09时14 GMT-6:
我改为POST,重新启动我的Rails服务器&叉勺。我得到了同样的错误。这是我的日志从服务器:
开始获取“/登录”为127.0.0.1在2012-05-26 09:13:36 -0500 处理由SessionsController#新为HTML 渲染会话/ new.html内的布局/应用(112.4ms) .erb完成500内部服务器错误在116ms
这里是耙路由信息:
forgot_password_session POST /sessions/:id/forgot_password(.:format) sessions#forgot_password
我再次尝试,但它没有奏效。我用更多的信息更新了我的描述。看起来像更多的代码或者可能需要更改某处的设置。 –
我再看看耙路线声明。它看起来像在寻找一个sessions/id/forgot_password路径。 我有登录页面上的链接。由于没有点击登录按钮,此时没有会话ID。我将把程序移至application_controller.rb并将电子邮件或用户名传递给它,然后重试。我会用我的结果发布更新。 –
对不起,它没有帮助......当怀疑脚手架!?我真的不知道,对不起。 –