Qu'avez-vous dans votre fichier de routes?
Essayez de mettre
map.log_out 'logout', :controller => 'sessions', :action => 'destroy'
dans vos itinéraires.
Ensuite, il suffit ont
<%= link_to "Sign out", log_out_url %>
pour le signe en lien.
EDIT
Son tout à la façon dont vous spécifiez le routage.
Parce que vous aviez le map.log_out dans le routage, alors l'URL http://localhost:3000/logout est ramassée par ceci et routée vers l'action correcte.
Si vous avez:
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
Cela vient de générer un lien pour vous de http://localhost:3000/session. Mais, cela ne fait rien au routage. Vous devez toujours spécifier les itinéraires corrects.
Notez que Rails n'ajoute pas l'action destroy à l'URL. (Il ne créera pas http://localhost:3000/session/destroy.) Il suppose que si vous avez une action de détruire que vous l'enverrez avec un verbe DELETE http. Pour une raison quelconque, ce n'est pas tout à fait parfait et il ne fait pas aussi défaut d'envoyer le verbe DELETE.
Vous pouvez le forcer à le faire:
<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>
Cela fonctionne toujours pas à moins que vous aussi la route correctement. Si vous mettez ce qui suit dans les routes:
map.resource :session
Ensuite rails va générer le routage pour tous les verbes et spécifier les actions par défaut pour eux, y compris SUPPR. Plus d'informations peuvent être trouvées ici: Rails Routing from the Outside In.
Cette page entière vaut la peine d'être lue encore et encore jusqu'à ce que vous la compreniez vraiment. Le routage est la clé pour comprendre Rails!
Pour un contrôleur simple comme Sessions, il est plus simple de spécifier l'itinéraire log_out, puis de lier à log_out_url ..
(espoir qui fait sens, la privation de sommeil est rampante dans!)
mon routes.rb a map.logout '/ fermeture de session',: controller => 'sessions',: action => « détruire ' – pixeltocode
génial ... qui a fonctionné! j'ai utilisé <% = link_to "Déconnexion", logout_url%> merci – pixeltocode
juste par curiosité ... ne devrait pas <% = link_to "se déconnecter",: controller => "sessions",: action => "détruire"%> fonctionne aussi? c'est référencer le 'def' def dans session_controller, qui fait la 'déconnexion' – pixeltocode