Ruby on Rails [Mémorandum d'erreur] Erreur de routage Aucune route ne correspond à [DELETE] "/ users / sign_out"

Conditions préalables

ruby 2.5.1 Rails 5.2.4.4 Création d'une application de publication vidéo Ruby on Rails pour un devoir scolaire.

Chose que tu veux faire

** Déconnexion ** avec la fonction Devise.

Statut d'erreur

  1. J'ai défini «Déconnexion» comme indiqué ci-dessous.

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 'Ma page', user_path, class: "nav-link" %>
            </li>
            <li class="nav-item">
                <%= link_to 'Nouveau poste', new_movie_path, class: "nav-link" %>
            </li>
            <li class="nav-item">
                <%= link_to 'Liste des messages', movies_path, class: "nav-link" %>
            </li>
            <li class="nav-item">
              <%= link_to "Se déconnecter", destroy_user_session_path, method: :delete, class: "nav-link" %>
            </li>
          </ul>
        </div>
  1. Malheureusement, une erreur lors de la déconnexion!

image.png

Ce que j'ai fait

** 1. ** Le paramètre d'itinéraire de la méthode de suppression semble être une erreur. Vérifiez avec les voies ferrées.

rails&nbsp;routes


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

cette? La méthode est ** GET **!

** 2. ** Juste au cas où, vérifiez les itinéraires des rails d'autres applications avec un appareil pour référence (cette fois, nous l'appellerons "échantillon").

rails&nbsp;routes(échantillon)



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

C'est ** DELETE **!

** 3. ** Quelle est la différence? Vérifiez routes.rb!

routes.rb(échantillon)


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

routes.rb (code en cours de création)


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

...。 L'échantillon est décrit par delete.

Le code en cours de création utilise la méthode des ressources. Et sauf: [: ** détruire **] ????

** 4. ** Tout d'abord, supprimez destroy of sauf: [: ** destroy **].

Itinéraires d'erreur.rb


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

Mais lorsque je me déconnecte, j'obtiens la même erreur.

image.png

** 5. ** Ajoutez ce qui suit! Je pense que c'est le double avec recours ...

Itinéraires d'erreur.rb


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

** 6. ** L'erreur a changé! Une seule erreur de ligne.

image.png

** 7. ** L'erreur indique: "Impossible de trouver l'action de destruction pour UsersController." J'ai ajouté ce qui suit et ** résolu (à l'écran supérieur après la déconnexion sans erreur!) **!

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. ** Vérifiez les voies ferrées au cas où.

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

Hmm ~. Après tout, la méthode est restée GET. Il y a une sensation de brume, mais aucune erreur ne se produira, nous allons donc la résoudre.

Je serais reconnaissant si quelqu'un pouvait me dire ce point (** Pourquoi puis-je me déconnecter même avec GET? **)! !!

Résumé

** Faux (malentendu complet): **

** Apprentissage: **

Référence: * Tutoriel Ruby on Rails Chapitre 8 Section 3 «Déconnexion»

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

C'est tout!

J'espère que cela vous aidera à résoudre l'erreur!

Recommended Posts

Ruby on Rails [Mémorandum d'erreur] Erreur de routage Aucune route ne correspond à [DELETE] "/ users / sign_out"
Mémorandum de base Ruby on Rails
Ruby On Rails conçoit un conflit de routage
[Ruby on Rails] 1 modèle CRUD (routage principal)
Commande de création / suppression du contrôleur Ruby on Rails
[Ruby on Rails] Ajoutez et supprimez des balises et affichez les messages (succès / erreur) en utilisant ajax.
Rails nouveau dans Ruby on Rails ~ Mémorandum jusqu'au déploiement 2
[Ruby on Rails] Un mémorandum de modèles de mise en page
Rails nouveau dans Ruby on Rails ~ Mémorandum jusqu'au déploiement 1
[Ruby on Rails] Fonction de post-édition (mise à jour, suppression)
[Ruby on Rails] Affichage individuel des messages d'erreur
[Ruby on Rails] Supprimer les images s3 avec Active Strage
Ruby on Rails élémentaire
Principes de base de Ruby on Rails
Association Ruby On Rails
[Ruby on Rails] méthode indéfinie ʻid'for nil: méthode de résolution d'erreur NilClass
Supprimer tout le contenu de la page de liste [Ruby on Rails]
Record d'apprentissage de Ruby on rails -2020.10.03
Création de portfolio Ruby on Rails
Record d'apprentissage Ruby on rails -2020.10.04
Record d'apprentissage de Ruby on rails -2020.10.09
Record d'apprentissage Ruby on rails-2020.10.07 ②
Record d'apprentissage Ruby on rails-2020.10.07 ①
Annuler la migration de Ruby on Rails
Record d'apprentissage de Ruby on rails -2020.10.06
Résumé de la validation Ruby on Rails
[Ruby on Rails] Fonction de publication que seuls les utilisateurs connectés peuvent publier
Explication de Ruby on rails pour les débutants ⑤ ~ Modifier et supprimer la base de données ~