Poursuite de la précédente "J'ai essayé de résumer une conception difficile à première vue". Cette fois à propos de la fonction de déconnexion. Cliquez ici pour le post précédent expliquant l'introduction de la devise ↓ https://qiita.com/TerToEer_sho/items/b5523ad100d08126a547
En premier lieu, le bouton de déconnexion n'est nécessaire que par l'utilisateur connecté. En d'autres termes Si vous êtes connecté, affichez le bouton de déconnexion. </ font> De plus, si vous êtes connecté, vous n'avez pas besoin du bouton de déconnexion. En d'autres termes Si vous n'êtes pas connecté, affichez le bouton de connexion. </ font>
Alors, comment savoir si vous êtes connecté? C'est une autre grande chose à propos de la conception, et il existe des méthodes que vous pouvez utiliser en installant Gemme de périphérique.
user_signed_in? méthode </ font>
Comme traduit en japonais, il renvoie si vous êtes connecté ou non en tant que valeur booléenne (vrai / faux).
Vous êtes connecté → vrai Non connecté → faux
Je ne connais pas les raisons pour lesquelles je peux savoir si je suis connecté.
En utilisant le fait que la valeur booléenne est renvoyée par la méthode user_signed_in?, Le branchement conditionnel est effectué à l'aide de l'instruction if.
En d'autres termes
Ruby:index.html.erb
<% if user_signed_in? %>
<%= link_to 'Se déconnecter', destroy_user_session_path, method: :delete %>
<% else %>
<%= link_to 'S'identifier', new_user_session_path %>
<%= link_to 's'inscrire', new_user_registration_path %>
<% end %>
Si vous écrivez le code en utilisant le fichier de vue Rails comme exemple, il ressemblera à ceci.
Le point d'être prudent est
① Dans la déconnexion de , définissez la méthode HTTP sur "delete" dans le troisième argument de la méthode link_to. </ font> En tant qu'image, cela ressemble à la suppression de l'état connecté. Au fait, si vous ne le définissez pas sur "supprimer", une erreur se produira. La raison en est que la méthode link_to utilise par défaut "get", qui est la méthode HPPT. Lorsque vous lisez link_to, c'est une méthode qui dit "Je vais passer à la destination du lien".
② Concernant le chemin du deuxième argument Au terminal
rails routes
Et confirmez. Sauf indication contraire, la même chose que ci-dessus convient.
Il peut être implémenté avec moins de travail car la méthode pratique user_signed_in peut être utilisée.
Recommended Posts