Sto tentando di consentire all'utente di reimpostare la propria password utilizzando l'opzione ripristinata di Devise. Questo non sembra funzionare per me.Devise - Recoverable (Reimposta password)
Estendo lo Devise::PasswordsController
in modo che non utilizzi il layout dell'applicazione.
class PasswordsController < Devise::PasswordsController
layout false
end
Nei miei percorsi, mi assicuro che venga utilizzato il controller delle mie password.
devise_for :users, :controllers => {:passwords => "passwords"}
resources :passwords
Ecco il mio modello per l'utente in modo da vedere che ho la possibilità :recoverable
.
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :trackable, :validatable
Sulla mia pagina di login, ho (sto usando Haml):
...
= link_to "Forgot your password?", new_password_path(resource_name)
Questo link mi porta correttamente per http://localhost:3000/users/password/new
Qui è il modulo che si trova lì:
%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"
Tuttavia, questo sembra cercare di portarmi nel posto sbagliato quando faccio clic sul pulsante. Sta fallendo ogni volta e non mostra alcuna email nel log del server.
Mi ha reindirizzamento a: http://localhost:3000/passwords/user
e dicendomi:
Routing Errore
No route matches "/passwords/user"
Qualsiasi idea di come posso procedere? Pensavo che usare l'opzione ripristinabile fosse pensata per essere più facile di così. Che cosa sto facendo di sbagliato?
UPDATE Per la cronaca, ho appena rimosso tutto quello che ho fatto, e ha cercato con i controllori testamentaria standard e ho modificato il mio layout applicazione in modo che non causerebbe un errore, e tutto funziona. Quindi ho solo bisogno di un buon metodo per rimuovere il layout dell'applicazione dalla pagina di reimpostazione della password.
Il problema rimane. Non mi consentirà di accedere alla pagina di reimpostazione della password senza di essa. Si lamenterà che non esiste un percorso per gli utenti/password/nuovi. Inizialmente l'ho pensato anch'io, ho trovato queste informazioni qui: https: // github.com/plataformatec/devise/wiki/How-To: -Allow-users-to-edit-their-password – ardavis
Penso che il problema principale sia il fatto che sto cercando di estendere Devise :: PasswordsController. Vorrei non doverlo fare, l'unica cosa che voglio è che la pagina di reimpostazione della password non utilizzi il layout dell'applicazione. – ardavis
Per la cronaca, ho appena rimosso tutto ciò che ho fatto e ho provato a utilizzare i controller di elaborazione standard e ho modificato il layout dell'applicazione in modo che non causasse un errore e tutto funzionasse. Quindi ho solo bisogno di un buon metodo per rimuovere il layout dell'applicazione dalla pagina di reimpostazione della password. – ardavis