2016-06-26 14 views
0

Also habe ich meine Webapp erstellt und stieß auf ein Problem mit Devise. Hier sind meine verschiedenen Dateien.Routing-Fehler: Keine Route stimmt überein [GET] "/ users/sign_out" - Devise 4.1

devise.rb Datei

config.sign_out_via = :delete 
config.sign_out_via = :get if Rails.env.test? 

index.html.erb Datei

<li> 
    <%= link_to "Logout", destroy_user_session_path, :method => :delete %> 
</li> 

routes.rb Datei

devise_for :users do 
    get '/users/sign_out' => 'devise/sessions#destroy' 
end 

Das Problem ist, dass, wenn ich drücke "Logout" auf Meine Webapp, bekomme ich sofort:

No route matches [GET] "https://stackoverflow.com/users/sign_out" 

Wenn ich Rake Routen betreibe | grep destroy_user, das ist die Antwort.

destroy_user_session DELETE /users/sign_out(.:format)  devise/sessions#destroy 

Nicht sicher, was los ist. Wie behebe ich das? Ich verwende Schienen 4.2.1/Entwurf 4.1.1. Danke im Voraus.

Antwort

1

Wenn Sie bei der Anfrage mit method: :delete Fehler bekommen und Sie sehen Matches [GET] dann ist das normalerweise ein Problem beim Laden der UJS-Datei.

Stellen Sie sicher, application.js ist ordnungsgemäß verpackt und lädt jQuery und den Rest der Rails-JavaScript es benötigt, um ordnungsgemäß zu funktionieren.

0

Ich hatte das gleiche Problem. Ich reparierte das Problem, indem diese in application.js ersetzt:

//= require jquery 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

mit:

//= require jquery_ujs 
//= require jquery 
//= require turbolinks 
//= require_tree . 

Es war so einfach :)

0

ich ein ähnliches Problem hatte - für mich war es, dass ich nicht geladen jquery_ujs überhaupt. (Ich hatte ein paar Probleme mit js in der neuesten Bootstrap-Version, entschied mich dafür, alles zu bekommen, was ich von einem CDN benötigte, und mein application.js, das den Verweis auf jquery_ujs enthielt, auskommentiert zu haben.

Verwandte Themen