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%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?
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%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.
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 ...
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
:
Dann starteten alle meine Devise-Routen mit devise
anstatt users
, also war der Konflikt weg.
Tags und Links ruby ruby-on-rails devise