我想讓用戶使用Devise的可恢復的選項重置密碼。這似乎不適合我。設計 - 可恢復(密碼重置)
我擴展了Devise::PasswordsController
,以便它不使用應用程序佈局。
class PasswordsController < Devise::PasswordsController
layout false
end
在我的路線中,我確保使用我的密碼控制器。
devise_for :users, :controllers => {:passwords => "passwords"}
resources :passwords
這是我的用戶模型,所以你看到我有:recoverable
選項。
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
在我的登錄頁,我(我使用HAML):
...
= link_to "Forgot your password?", new_password_path(resource_name)
該鏈接是否正確需要我http://localhost:3000/users/password/new
。這裏是被發現存在形式:
%h2 Forgot your password?
= form_for(resource, as: resource_name, url: password_path(resource_name), html: { :method => :post }) do |f|
= devise_error_messages!
%div
= f.label :email
%br/
= f.email_field :email
%div= f.submit "Send me reset password instructions"
但是,當我單擊按鈕時,這似乎嘗試將我帶到錯誤的地方。它每次都失敗,並且不會在服務器日誌中顯示任何電子郵件。
它重定向我:http://localhost:3000/passwords/user
,告訴我:
路由錯誤
No route matches "/passwords/user"
任何想法,我該怎麼處理?我認爲使用可恢復的選項意味着比這更容易。我究竟做錯了什麼?
UPDATE 爲了記錄在案,我只是刪除一切我所做的,並使用標準色器件控制器嘗試過了,我修改了應用程序的佈局,這樣就不會導致錯誤,並且一切工作。所以我只需要一個很好的方法從密碼重置頁面中刪除應用程序佈局。
問題仍然存在。如果沒有它,它不會讓我訪問重置密碼頁面。它會抱怨沒有用戶/密碼/新的路線。我原來也是這麼想的,我在這裏找到了這個信息:https:// github。com/plataformatec/devise/wiki /如何: - 允許用戶編輯他們的密碼 – ardavis 2011-12-16 16:57:32
我認爲主要問題是我試圖擴展Devise :: PasswordsController。我希望我不必這樣做,我唯一想要的是重置密碼頁面不使用我的應用程序佈局。 – ardavis 2011-12-16 16:58:16