¿Qué tienes en tu archivo de rutas?
trate de poner
map.log_out 'logout', :controller => 'sessions', :action => 'destroy'
en sus rutas.
A continuación, sólo tienen
<%= link_to "Sign out", log_out_url %>
para el enlace Cerrar sesión.
EDITAR
Su todo se debe a la forma de especificar la ruta.
Como tenía el map.log_out en el enrutamiento, la URL url http://localhost:3000/logout se recoge y se enruta a la acción correcta.
Si usted tiene:
<%= link_to "logout", :controller=> "sessions", :action=> "destroy" %>
Esto sólo va a generar un enlace para usted de http://localhost:3000/session. Pero no le hace nada al enrutamiento. Aún necesita especificar las rutas correctas.
Tenga en cuenta que Rails no agrega la acción de destrucción a la url. (No creará http://localhost:3000/session/destroy.) Supone que si tiene una acción de destruir que lo va a enviar con un verbo DELETE http. Por alguna razón, no es del todo perfecto y tampoco envía el verbo DELETE.
Puede forzarlo a hacer esto:
<%= link_to "logout", {:controller=> "user_sessions", :action=> "destroy"}, :method => :delete%>
Esto todavía no funcionará a menos que también ruta correctamente. Si ponemos la siguiente en las rutas:
map.resource :session
Entonces rieles generará el enrutamiento para todos los verbos y especificar las acciones predeterminadas para ellos, incluyendo BORRAR. Puede encontrar más información aquí: Rails Routing from the Outside In.
Esa página entera vale la pena leer una y otra vez hasta que realmente la entiendas. ¡El enrutamiento es clave para entender Rails!
Para un controlador simple como Sessions, es más fácil simplemente especificar la ruta log_out y luego enlazar con log_out_url ..
(Hope que tenga sentido, la privación del sueño se está arrastrando en!)
mi routes.rb tiene map.logout '/ cierre de sesión',: controller => 'sesiones',: action => 'destruir ' – pixeltocode
increíble ... ¡funcionó! utilicé <% = link_to "Cerrar sesión", logout_url%> gracias – pixeltocode
solo por curiosidad ... no debería <% = link_to "logout",: controller => "sessions",: action => "destroy"%> ¿también funciona? se está refiriendo a la def 'destruir' en session_controller, que hace que 'logout' – pixeltocode