[RUBY] [Rails] Comment obtenir l'URL de la source de transition et la rediriger

Chose que tu veux faire

Je souhaite revenir (rediriger) vers l'URL source de la transition après un processus spécifique avec l'application Flima développée par Rails. Plus précisément ↓

  1. Appuyez sur le bouton d'achat de la page du produit
  2. Si la carte de crédit n'est pas enregistrée, ** Transition vers l'écran d'enregistrement Creca **
  3. Après vous être enregistré auprès de Creca, ** Revenez à la page du produit que vous tentiez d'acheter (redirection) **

À l'origine, après l'enregistrement de Creca, l'écran est passé à l'écran affichant les informations de la carte. C'était un comportement très hostile pour les utilisateurs qui devaient trouver le produit qu'ils essayaient d'acheter à nouveau et appuyer sur le bouton d'achat.

Situation d'origine

Appuyez sur le bouton d'achat sur la page du produit → Transition vers l'écran d'enregistrement Creca (lorsque Creca n'est pas enregistré) 92e9b1521895f97a6e1f2c4a46c7ce3f.gif

Enregistrement Creca → Passage à l'écran pour afficher les informations de la carte enregistrée e94f61e09decdfded6051eabaa91cd4b.gif

Ce n'est pas facile à utiliser, et le produit que vous avez essayé d'acheter peut être dans une situation où "Wow, c'est difficile de le retrouver .. Je ne veux pas l'acheter." J'ai donc cherché une solution. Je l'ai bien résolu, alors je vais le décrire.

environnement

Ruby 2.5.1 Rails 5.2.4

Utilisez request.referer

La description elle-même est incroyablement simple.

creditcards_controller.rb


  def create
    render :new if params[:payjpToken].blank?
    customer = Payjp::Customer.create(card: params[:payjpToken])
    @card    = Card.new(user_id: current_user.id, payjp_id: customer.id)
    @card.save ? (redirect_to request.referer) : (render :new) #Cette ligne! !! !!
  end

Dans la ligne ci-dessus à la fin, j'écris redirect_to request.referer, mais avec cela, j'obtiens l'URL (référent HTTP) avant de passer à l'écran d'enregistrement de la carte (cartes de crédit / nouveau) et la redirige. ..

modifié

Enregistrement de la carte → Revenez à la page que vous tentiez d'acheter → Achetez maintenant! 480ebbde6bc9bd533df8fadda2e06681.gif

J'ai pu le résoudre comme ça.

(Au fait, ? (): () Est un opérateur ternaire. Pour plus de détails, voir Qiita de M. Ito ([[Pour les débutants] Idiomes et méthodes utiles qui peuvent être utilisées pour la refactorisation dans Ruby and Rails](https: // qiita.com/jnchito/items/dedb3b889ab226933ccf))

Cliquez ici pour la «demande» des rails. [[Rails Guide] 10 objets de requête et de réponse](https://railsguides.jp/action_controller_overview.html#request%E3%82%AA%E3%83%96%E3%82%B8%E3%82%A7 % E3% 82% FA% E3% 83% 88% E3% 81% Réponse A8% E3% 82% AA% E3% 83% 96% E3% 82% B8% E3% 82% A7% E3% 82% FA% E3 % 83% 88)

Je pense que vous devriez rechercher sur Google le référent (référent) et le référencement HTTP.

Recommended Posts

[Rails] Comment obtenir l'URL de la source de transition et la rediriger
[Java] Comment obtenir l'URL de la source de transition
Source utilisée pour obtenir l'URL de la source de redirection en Java
[Rails] Comment obtenir le contenu des paramètres forts
[Rails] Obtenez le nom du chemin de l'URL avant la transition et modifiez la destination du lien
[Swift5] Comment obtenir un tableau et un ensemble de différences entre les tableaux
Comment obtenir le jour d'aujourd'hui
[Java] Comment obtenir l'URL redirigée finale
[Rails] Comment émettre des messages de réussite et d'erreur
Comment faire de https le schéma de l'URL générée par l'assistant d'URL de Rails
Obtenez l'URL de la destination de la redirection HTTP en Java
[Java] Comment obtenir la valeur maximale de HashMap
[Rails] Comment changer le nom de colonne de la table
[Android] Comment obtenir la langue de réglage du terminal
Obtenez l'URL de la destination de la redirection HTTP dans Ruby
[Swift] Comment obtenir l'ID de document Firebase
Comment intégrer et afficher des vidéos youtube dans Rails (vous pouvez également obtenir l'URL saisie en modifiant)
[Explication approximative] Comment séparer le fonctionnement de l'environnement de production et de l'environnement de développement avec Rails
Comment obtenir les informations les plus longues de Twitter à partir du 12/12/2016
[Rails] Comment afficher une liste de messages par catégorie
Comment exécuter React et Rails sur le même serveur
Comment vérifier l'extension et la taille des fichiers téléchargés
[jsoup] Comment obtenir la totalité de la documentation
[Rails] Comment empêcher la transition d'écran
[Swift5] Comment analyser un JSON complexe et obtenir l'index de l'élément qui satisfait la condition
Comment marquer les mots-clés de recherche indépendamment de la casse et sans changer le mot source de la recherche
Comment définir l'adresse IP et le nom d'hôte de CentOS8
[Webpacker] Résumé de l'installation de Bootstrap et jQuery dans Rails 6.0
[Rails] Comment introduire le kaminari avec Slim et changer le design
[Rails / Heroku / MySQL] Comment réinitialiser la base de données de l'application Rails sur Heroku
Comment obtenir le contenu de la carte à l'aide du mémorandum d'instructions
[Rails] Comment omettre l'affichage de la chaîne de caractères de la méthode link_to
[Rails] Comment changer le titre de la page du navigateur pour chaque page
Comment supprimer de grandes quantités de données dans Rails et problèmes
Méthode pour additionner le nombre d'années et obtenir la fin du mois
Comment obtenir l'identifiant de la clé PRIMAY incrémentée automatiquement dans MyBatis
[Rails] Lire le RSS du site et renvoyer le contenu au premier plan
[Java] Comment convertir du type String en type Path et obtenir le chemin
Comment obtenir la longueur d'un fichier audio avec Java
[Docker] Comment sauvegarder et restaurer les données de base de données de l'application Rails sur docker-compose [MySQL]
[Rails] Comment utiliser la méthode de la carte
Comment déterminer le nombre de parallèles
[Java] Comment obtenir le répertoire actuel
Comment trier une liste de SelectItems
Comment trouver les dizaines et les unités
Comment obtenir la date avec Java
Emplacement de la définition de la méthode Résumé de la vérification Lorsque défini dans le projet et Rails / Gem
[Rails] Comment enregistrer temporairement l'URL de demande d'un utilisateur qui n'est pas connecté et revenir à cette URL après la connexion
Comment changer l'affichage du menu d'en-tête pour chaque page de transition
Comment modifier le nombre maximum et maximum de données POST dans Spark
[Rails] Comment obtenir les informations sur l'utilisateur actuellement connecté avec devise
[Java] Comment accéder au début d'une chaîne spécifique à l'aide de la classe String
Comment contraindre l'action de la destination de transition lorsqu'elle n'est pas connectée