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.
** Déconnexion ** avec la fonction Devise.
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. ** Le paramètre d'itinéraire de la méthode de suppression semble être une erreur. Vérifiez avec les voies ferrées.
rails 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 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.
** 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.
** 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? **)! !!
** 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