Nachdem ich die relevanten Geräte-Tutorials befolgt habe, bin ich auf die letzte Hürde gefallen.
Devise hat den folgenden Code generiert, um einen Benutzer zu signieren:
%Vor% Und die Route wird angezeigt, wenn rake routes
Ich erhalte jedoch einen Fehler, der besagt:
Die Aktion 'show' wurde für UsersController
nicht gefundenIrgendwelche Ideen?
Der Pfad ist korrekt, aber wenn Sie genau hinsehen, sehen Sie, dass es sich nicht um eine GET-Anfrage, sondern um eine DELETE-Anfrage handelt, also übergeben Sie die Methode:
%Vor%Bearbeiten:
Dies sollte Ihrem Link ein Attribut data-method="delete"
hinzufügen. Überprüfen Sie das (werfen Sie einen Blick auf das generierte HTML). Wenn das Attribut vorhanden ist und nichts passiert, wenn Sie auf diesen Link klicken, stellen Sie sicher, dass Sie die Standard-JavaScript-Dateien in Ihr Layout eingefügt haben. Es sollte eine Zeile wie folgt sein:
<%= javascript_include_tag :defaults %>
in Ihrem Layout.
& gt; & gt; Wichtig & lt; & lt; : Sie können die Abmelde-URL nicht in Ihre Adressleiste eingeben und die Eingabetaste drücken. Sie funktioniert nicht, da es sich um eine GET- und nicht um eine DELETE-Anfrage handelt. Die Magie dahinter ist, dass ein JavaScript-Helfer sich an das "onclick" -Ereignis des Links anschließt und dann ein verstecktes Formular (via POST) an das href
-Ziel der URL sendet, das ein verstecktes Feld namens _method
enthält Wert "löschen".
Warum all das? Es ist eine Sicherheitssache, sonst könnte dich jemand zur Abmeldeseite umleiten und dich einfach abmelden und alle deine ungespeicherten Sessions werden weg sein ...
Wenn Sie sich über GET abmelden möchten, fügen Sie dies Ihrem
hinzuconfig / initializers / devise.rb :
config.sign_out_via = :get
Tags und Links ruby ruby-on-rails-3 ruby-on-rails devise