Créons une fonction qui ne gâche pas l'opération de l'utilisateur.
Mettons-le en attente sans gâcher le fonctionnement des utilisateurs non connectés.
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
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
Ignorez l'URL qui a terminé son rôle.
session.delete(:forwarding_url)
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.
Voici un exemple de mise en œuvre.
session(:forwarding_url) = request.original_url if request.get?
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