[RAILS] À propos du transfert amical

Améliorons la convivialité

Créons une fonction qui ne gâche pas l'opération de l'utilisateur.

Implémentons un gué amical

Mettons-le en attente sans gâcher le fonctionnement des utilisateurs non connectés.

Lors du blocage de l'accès pour les utilisateurs non connectés

Gardons l'URL consultée.

Conservez l'URL jusqu'à ce que l'utilisateur se connecte. L'endroit où écrire le code de rétention d'URL se trouve dans l'action qui bloque les utilisateurs non connectés. Voici un exemple de mise en œuvre.

session(:forwarding_url) = request.original_url

Lorsque l'utilisateur bloqué se connecte

Passons à l'URL que vous déteniez.

Le moment du transfert d'URL est immédiatement après la création d'une session. Donnons la priorité au traitement normal des redirections. Voici un exemple de mise en œuvre.

 redirect_to session(:forwarding_url) || @user

Jetons l'URL contenue

Ignorez l'URL qui a terminé son rôle.

session.delete(:forwarding_url)

Lorsqu'un utilisateur non connecté soumet à l'aide d'un formulaire

Dans certains cas, une erreur se produit.

Vous obtiendrez l'URL des requêtes POST, PATCH et DELETE avec la formule de droite suivante.

session(:forwarding_url) = request.original_url

La méthode redirect_to ne peut traiter que les requêtes GET.

redirect_to session(:forwarding_url)

Par conséquent, une demande GET est envoyée à l'URL qui attend une demande POST, PATCH ou DELETE et, dans certains cas, une erreur se produit.

Conservez l'URL uniquement lorsqu'une requête GET est envoyée.

Voici un exemple de mise en œuvre.

session(:forwarding_url) = request.original_url if request.get?

Rendre le code plus facile à lire

Donnez un nom descriptif au code de transfert d'URL et de destruction d'URL. Donnez un nom descriptif à la destination de la redirection pour un traitement normal (par défaut).

redirect_back_or(@user)

def redirect_back_or(default)
   redirect_to session(:forwarding_url) || default
  session.delete(:forwarding_url)
end 

Recommended Posts

À propos du transfert amical
À propos =
À propos de Kotlin
À propos de attr_accessor
À propos de Hinemos
À propos des rails 6
À propos du printemps ③
À propos d'énumération
À propos facultatif
À propos du hachage
À propos de JitPack
À propos de ça ()
À propos de l'encapsulation
À propos de JAVA_HOME
À propos des exceptions
À propos de la portée
[Maven] À propos de Maven