ruby 2.5.1 Rails 5.2.4.4 Erstellen einer Ruby on Rails-Video-Posting-Anwendung für eine Schulaufgabe.
** Abmelden ** mit Gerätefunktion.
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. ** Die Routeneinstellung der Löschmethode scheint ein Fehler zu sein. Überprüfen Sie mit Schienen Routen.
rails 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 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.
** 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.
** 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? **)! !!
** 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