Benutzer mit id = sign_out konnte nicht gefunden werden

8

Der Abmeldelink funktioniert in meiner Rails-Anwendung nicht.

Ich habe meine routes.rb überprüft, die unten aufgeführt ist, und meine application.html.erb scheint dem richtigen Pfad zu folgen.

Der folgende Fehler wird angezeigt.

%Vor%

Meine routes.rb

%Vor%

und meine application.html, die anscheinend dem richtigen Weg folgt, was ich sehen kann.

Jede Hilfe wird sehr geschätzt!

%Vor%

Mein Benutzer Controller sowie ich habe den Verdacht, dass hier das Problem liegt, aber nicht sicher, was der Fehler ist.

%Vor%     
PatGW 18.03.2014, 20:40
quelle

5 Antworten

0

Sie müssen verschieben:

%Vor%

über dein devise_scope . Rails sucht nach Routen von der Routendatei. Ihre Abmelde-URL stimmt mit users/:id überein, daher versucht sie, show action mit sign_out als id darzustellen.

UPDATE:

Benötigen Sie wirklich die letzte Zeile in Ihrem devise_scope -Block?

    
BroiSatse 18.03.2014, 20:47
quelle
10

Ich hatte das gleiche Problem, meine Routen waren in der richtigen Reihenfolge, die link_to-Methode richtig verwendet und Schienen weiterhin die Benutzer / ID-Route mit ausgelöst: id = & gt; :Ausloggen Das habe ich herausgefunden, weil ich jquery_ujs aus meiner Datei application.js entfernt habe ...

jquery_ujs verarbeitet das Datenmethodenattribut in den Links (generiert von link_to, wenn Sie die method -Option verwenden), die zur Bestimmung der korrekten Route verwendet wird, wie hier erklärt: Ссылка

Stellen Sie also sicher, dass in Ihrer application.js Folgendes enthalten ist:

%Vor%     
Rafik 21.10.2014 12:55
quelle
2

Wenn Sie / users / sign_out direkt von der URL aufrufen, funktioniert das nicht, da die Routen lauten:

%Vor%

id est, es verwendet die DELETE-Methode. Sie müssen Ihren Geräte-Initialisierer zu:

ändern %Vor%

andere Option wäre, ein kleines Formular und seine Schaltfläche mit DELETE als Methode zu erstellen.

    
aarkerio 03.09.2016 18:42
quelle
1

Keine dieser Lösungen funktionierte für mich. Auch das passiert mir gerade im Entwicklungsmodus ... Ich habe es behoben, indem ich

hinzugefügt habe %Vor%

in der eingestellten Benutzerfunktion. Nicht die schönste Lösung, aber es funktioniert ...

    
Markus Andreas 07.12.2015 10:12
quelle
0

Da keine der anderen Antworten funktionierte, stellte ich fest, dass Sie den Basispfad für jeden Devise-Endpunkt wie beschrieben ändern konnten. hier . Also, was ich getan habe, war Benutzer devise_for auf routes.rb :

%Vor%

Dann starteten alle meine Devise-Routen mit devise anstatt users , also war der Konflikt weg.

    
Santiago Martí Olbrich 29.01.2018 21:52
quelle

Tags und Links