Aggiungere un pulsante logout un riposo di autenticazione
-
24-09-2019 - |
Domanda
Ho installato RIPOSANTE di autenticazione e tutto sembra funzionare bene.posso iscrizione e login.l'unico modo che ho logout digitando l'URL http://localhost:3000/logout
come faccio ad aggiungere un pulsante logout su una pagina?ho provato ad aggiungere uno per i membri.rhtml
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
a cui fa riferimento il session_controller.rb ma mi da un errore "Nessuna azione risposto alla mostra.Azioni:creare, distruggere, e di nuovo"
ogni pensiero?thanx
Soluzione
Che cosa avete nel vostro file di route?
Prova a mettere
map.log_out 'logout', :controller => 'sessions', :action => 'destroy'
nei percorsi.
Poi basta avere
<%= link_to "Sign out", log_out_url %>
per il segno di link.
MODIFICA
Il suo tutti a come si specificare il routing.
Perché aveva una mappa.log_out di routing, quindi l'url http://localhost:3000/logout url è preso da questo e instradato verso l'azione corretta.
Se si dispone di :
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
Questo sarà solo generare un link per voi di http://localhost:3000/session.Ma, non fa nulla per il routing.Hai ancora bisogno di specificare le rotte giuste.
Nota che le Rotaie non aggiungere il distruggere azione per l'url. (Non creare http://localhost:3000/session/destroy.) Si presuppone che se si dispone di un azione di distruggere verranno inviati con un ELIMINA http verbo.Per qualche ragione, non è molto ideale e non effettivamente anche quello di default per l'invio di ELIMINARE il verbo.
Si può forzare a fare questo :
<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>
Questo ancora non funziona, a meno che è anche il percorso in modo corretto.Se si mettono i seguenti percorsi :
map.resource :session
Quindi rails generare il routing per tutti i verbi e specificare le azioni predefinite per loro, tra cui ELIMINARE.Ulteriori informazioni possono essere trovate qui : Guide di Routing dall'Esterno.
Che tutta la pagina sia la pena di leggere fino a che non hai davvero capito.Il Routing è la chiave per la comprensione Rotaie!
Per un semplice controllore, come le Sessioni, è più facile solo per specificare il log_out percorso e quindi collegare log_out_url..
(Spero che abbia un senso, la privazione del sonno è strisciante!)
Altri suggerimenti
Se si utilizza escogitare e il vostro modello in questione è utente , il modo elegante è qui:
<%= link_to 'logout', destroy_user_session_path, method: :delete %>
Funziona perché:
- a causa di HTTP metodi sono GET, POST, PUT, PATCH e DELETE, in modo da utilizzare
method: :delete
(nonmethod: :destroy
) - che stiamo usando
destroy_user_session_path
con escogitare e utente modello, come al solito, se si definisce altro nome del modello come Gestione è sufficiente cambiare il logout percorsodestroy_manager_session_path