Ruby on Rails [Fehlermemorandum] Routing-Fehler Keine Route stimmt mit [DELETE] "/ users / sign_out" überein.

Voraussetzungen

ruby 2.5.1 Rails 5.2.4.4 Erstellen einer Ruby on Rails-Video-Posting-Anwendung für eine Schulaufgabe.

Was du machen willst

** Abmelden ** mit Gerätefunktion.

Fehlerstatus

  1. Ich habe "Abmelden" wie unten gezeigt eingestellt.

app/views/layouts/application.html/erb



 <% if user_signed_in? %>
        <div class="collapse navbar-collapse" id="Navber">
          <ul class="navbar-nav mr-auto">
            <li class="nav-item">
              <%= link_to 'Meine Seite', user_path, class: "nav-link" %>
            </li>
            <li class="nav-item">
                <%= link_to 'Neuer Beitrag', new_movie_path, class: "nav-link" %>
            </li>
            <li class="nav-item">
                <%= link_to 'Beitragsliste', movies_path, class: "nav-link" %>
            </li>
            <li class="nav-item">
              <%= link_to "Ausloggen", destroy_user_session_path, method: :delete, class: "nav-link" %>
            </li>
          </ul>
        </div>
  1. Leider ein Fehler beim Abmelden!

image.png

Was ich getan habe

** 1. ** Die Routeneinstellung der Löschmethode scheint ein Fehler zu sein. Überprüfen Sie mit Schienen Routen.

rails&nbsp;routes


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

Das? Die Methode ist ** GET **!

** 2. ** Nur für den Fall, überprüfen Sie die Schienenrouten anderer Apps mit einem Gerät als Referenz (diesmal nennen wir es "Beispiel").

rails&nbsp;routes(Stichprobe)



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

Es ist ** LÖSCHEN **!

** 3. ** Was ist der Unterschied? Überprüfen Sie route.rb!

routes.rb(Stichprobe)


delete  'tweets/:id'  => 'tweets#destroy'

routes.rb (Code wird erstellt)


 resource :user, except: [:new, :create, :destroy]

...。 Das Beispiel wird durch Löschen beschrieben.

Der erstellte Code verwendet die Ressourcenmethode. Und außer: [: ** zerstören **] ????

** 4. ** Löschen Sie zuerst zerstören von außer: [: ** zerstören **].

Fehlerrouten.rb


 resource :user, except: [:new, :create]

Aber wenn ich mich abmelde, erhalte ich den gleichen Fehler.

image.png

** 5. ** Fügen Sie Folgendes hinzu! Ich denke, es ist doppelt mit Ressourcen ...

Fehlerrouten.rb


 delete 'users/:id' =>'users#destroy'

** 6. ** Der Fehler hat sich geändert! Nur ein Zeilenfehler.

image.png

** 7. ** Fehler sagt: "Zerstörungsaktion für UsersController kann nicht gefunden werden." Folgendes hinzugefügt und ** behoben (auf dem oberen Bildschirm nach dem fehlerfreien Abmelden!) **!

https://railstutorial.jp/chapters/log_in_log_out?version=4.2#sec-logging_out

app/controllers/users_controller.rb


 def destroy
        session.delete(:user_id)
        @current_user = nil
        redirect_to root_url

** 8. ** Überprüfen Sie die Schienenrouten für alle Fälle.

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

Hmm ~. Immerhin blieb die Methode GET. Es gibt ein Gefühl von Dunst, aber es wird kein Fehler auftreten, also werden wir es beheben.

Ich wäre dankbar, wenn mir jemand diesen Punkt mitteilen könnte (** Warum kann ich mich auch mit GET abmelden? **)! !!

Zusammenfassung

** Falsch (völliges Missverständnis): **

** Lernen: **

Referenz: * Ruby on Rails Tutorial Kapitel 8 Abschnitt 3 "Abmelden"

https://railstutorial.jp/chapters/log_in_log_out?version=4.2#sec-logging_out

Das ist es!

Ich hoffe, es hilft Ihnen, den Fehler zu beheben!

Recommended Posts

Ruby on Rails [Fehlermemorandum] Routing-Fehler Keine Route stimmt mit [DELETE] "/ users / sign_out" überein.
Ruby on Rails Grundlegendes Memorandum
Ruby On Rails entwickelt Routing-Konflikte
[Ruby on Rails] 1 Modell CRUD (Routing Main)
Befehl zum Erstellen / Löschen des Ruby on Rails-Controllers
[Ruby on Rails] Hinzufügen und Löschen von Tags und Anzeigen von (Erfolgs- / Fehler-) Meldungen mit Ajax.
Rails neu in Ruby on Rails ~ Memorandum bis zur Bereitstellung 2
[Ruby on Rails] Ein Memorandum mit Layoutvorlagen
Rails neu in Ruby on Rails ~ Memorandum bis zur Bereitstellung 1
[Ruby on Rails] Nachbearbeitungsfunktion (Aktualisieren, Löschen)
[Ruby on Rails] Individuelle Anzeige von Fehlermeldungen
[Ruby on Rails] Löschen Sie s3-Bilder mit Active Strage
Ruby on Rails Elementary
Ruby on Rails Grundlagen
Ruby On Rails Association
[Ruby on Rails] undefinierte Methode `id'for nil: NilClass-Fehlerbehebungsmethode
Alle Inhalte der Listenseite löschen [Ruby on Rails]
Ruby on Rails Lernrekord -2020.10.03
Portfolioerstellung Ruby on Rails
Ruby on Rails Lernrekord -2020.10.04
Ruby on Rails Lernrekord -2020.10.09
Ruby on Rails lernen Rekord-2020.10.07 ②
Ruby on Rails lernen Rekord-2020.10.07 ①
Brechen Sie die Ruby on Rails-Migration ab
Ruby on Rails Lernrekord -2020.10.06
Zusammenfassung der Ruby on Rails-Validierung
[Ruby on Rails] Posting-Funktion, die nur angemeldete Benutzer posten können
Erklärung von Ruby on Rails für Anfänger ⑤ ~ Datenbank bearbeiten und löschen ~