我正在使用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並將電子郵件或用戶名傳遞給它,然後重試。我會用我的結果發佈更新。 –
對不起,它沒有幫助......當懷疑腳手架!?我真的不知道,對不起。 –