Ninguna ruta coincide con «/users/sign_out» idear rieles 3

He instalado deshace en mi aplicación y he aplicado lo siguiente en mi archivo:application.html.erb

<div id="user_nav">
    <% if user_signed_in? %>
        Signed in as <%= current_user.email %>. This cannot be cheese?
        <%= link_to 'Sign out', destroy_user_session_path %>
    <% else %>
        <%= link_to 'Register', new_user_registration_path %> or <%= link_to 'Sign in', new_user_session_path %>
    <% end %>
</div>

Corrí y confirmé que todas las rutas son válidas.rake routes

Además, en mi archivo tengo y . routes.rbdevise_for :usersroot :to => "home#index"

Recibo el siguiente error de enrutamiento al hacer clic en el enlace «Cerrar sesión»:

No route matches "/users/sign_out"

¿Alguna idea de qué está causando el error?

Respuestas:31 Respuestas 31
Tiempo:hace 11 años, 2 meses
Última modificación:hace 4 meses

Solución

Creo que la ruta para cerrar sesión es un método. Esto significa que su enlace de cierre de sesión debe verse así:DELETE

<%= link_to "Sign out", destroy_user_session_path, :method => :delete %>

El tuyo no incluye la pieza. Además, tenga en cuenta que para que esto funcione, también debe incluirlo en su archivo de diseño ().:method => :delete<%= javascript_include_tag :defaults %>application.html.erb

Otras respuestas

Cambié esta línea en devise.rb:

config.sign_out_via = :delete

Para

config.sign_out_via = :get

y empezó a funcionar para mí.

Deja un comentario