[RUBY] Comment créer une route directement à partir de l'URL que vous souhaitez spécifier + α

Bonsoir Homme Aloha, Yasunori!

Aujourd'hui, j'ai eu du mal à décrire le routage lors de la création d'un portefeuille, je vais donc l'écrire comme un mémorandum pour ceux qui souffrent de la même chose ou lorsque je l'oublie.

Cela fait longtemps, donc je vais d'abord poster la conclusion.

Conclusion

Si vous ne souhaitez pas que l'URL de la page à laquelle vous accédez lorsque vous appuyez sur le bouton de recherche soit sous le contrôle du contrôleur,

config/routes.rb


Rails.application.routes.draw do

    get '/:name', to: 'Nom du contrôleur#edit' 

end

Et ça va! !!

↓ Cliquez ici pour la page de référence Acheminement des documents Rails [Conception d'itinéraire] Comment basculer et afficher plusieurs vues en une seule action

Eh bien, j'écrirai en détail ci-dessous.

Statut

Je voulais créer une fonction qui passe à la page de recherche de catégorie d'hôtel lorsque j'appuie sur le bouton nommé __ "Hotel" __ de la page supérieure, mais je voulais que l'URL soit au format "localhost: 3000 / hotel". Tout d'abord, j'ai créé chaque contrôleur séparément et je l'ai décrit dans le routage.

config/routes.rb


Rails.application.routes.draw do

    resources :hotels, only [:index]

end

ensuite hotels GET /hotels(.:format) hotels#index Le routage a été créé.

Avec cela, l'URL pourrait être réalisée sous une forme proche de celle souhaitée, mais plus il y a d'éléments, plus un contrôleur séparé doit être créé.

Cela signifie qu'il vous suffit de changer le contrôleur appelé! j'ai pensé

config/routes.rb


Rails.application.routes.draw do

    resources :hotels, only [:index], controller: 'experiences'

end

Si vous faites cela, l'action d'index` du ʻexperiences controller sera appelée lorsque vous y accédez, donc je pense que le fichier de vue peut être affiché en utilisant un fichier modèle etc., mais dans ce cas rien n'est décrit Vous vous retrouvez avec un "contrôleur d'hôtels" manquant. Cette fois, j'en écris un, mais à mesure que le nombre d'éléments augmente, le nombre de descriptions de routage augmentera et le nombre de fichiers augmentera.

Je me demandais ce qui s'était passé ... et j'ai découvert que je faisais des recherches sur diverses choses! !! Tout d'abord, si vous souhaitez spécifier l'URL

config/routes.rb


Rails.application.routes.draw do

    get '/hotel', to: 'experiences#index'

end

C'était bien d'écrire! !!

Cela a été mentionné sur la page de routage de la documentation Rails.

J'ai réalisé une fois de plus l'importance de vérifier fermement les documents ...

En passant, cela seul a atteint l'objectif initial de "définir l'URL sur localhost: 3000 / hotel", mais si elle est laissée telle quelle, le nombre de pages augmentera en plus de / hotel. À ce moment-là, le nombre de descriptions augmentera régulièrement. C'est un gros problème, alors améliorons cela aussi! !!

Après amélioration

Vous pouvez définir une nouvelle «action d'édition» dans le «contrôleur d'expériences» et la mettre ensemble pour que tout le routage y soit! !!

controllers/experiences_controller.rb


class ExperiencesController < ApplicationController

  def edit
    render "/#{params[:name]}"
  end

end

config/routes.rb


Rails.application.routes.draw do

    get '/:name', to: 'experiences#edit'

end

De plus, dans la partie /: name de l'URL, en définissant: nom sur la clé dans les paramètres lors de l'envoi de la requête et en passant le nom de fichier du modèle partiel comme valeur, le render dans l''action d'édition Le fichier de vue correspondant est affiché par la méthode `.

Après cette expérience

Je peux sentir l'importance de lire les documents officiels et la gratitude des documents laissés par mes prédécesseurs ...

Si vous rencontrez des problèmes, j'aimerais continuer à enquêter! !! (Cela ressemble à une autre application de puissance, mais est-ce que ça va ...)

Recommended Posts

Comment créer une route directement à partir de l'URL que vous souhaitez spécifier + α
Comment créer un formulaire pour sélectionner une date dans le calendrier
3. Créez une base de données à laquelle accéder à partir du module Web
Comment créer une URL JDBC (Oracle Database, Thin)
Comment créer une méthode
Comment créer une partie d'espace réservé à utiliser dans la clause IN
Je souhaite créer un formulaire pour sélectionner la catégorie [Rails]
Lorsque vous souhaitez modifier le libellé à afficher lors de la création d'une zone de sélection à partir d'énumération
Comment créer un fichier jar et un fichier war à l'aide de la commande jar
Si vous souhaitez modifier l'environnement de développement Java d'Eclipse
Comment exécuter l'exemple Kotlin Coroutine à partir de la ligne de commande
Un mémo lorsque vous souhaitez effacer la partie horaire de l'agenda
Comment renvoyer une valeur du modèle au contrôleur en utilisant le protocole [Swift5]
Comment exécuter un fichier GIF à partir de la ligne de commande Linux (Ubuntu)
Comment créer un référentiel Maven pour 2020
Comment télécharger et exécuter le package Jar directement à partir du référentiel Maven avec juste la ligne de commande
[Swift5] Comment créer un écran de démarrage
[rails] Comment créer un modèle partiel
[Rails] Comment créer une table, ajouter une colonne et changer le type de colonne
Vous ne pouvez pas changer la version de facette du projet d'un module Web dynamique à x.x. Comment faire avec
[Spring Boot] Comment obtenir des propriétés dynamiquement à partir d'une chaîne contenue dans une URL
Comment créer une base de données H2 n'importe où
[Rails] Comment créer un graphique à l'aide de lazy_high_charts
Comment obtenir un heapdump à partir d'un conteneur Docker
Comment créer des pages pour le tableau "kaminari"
Comment créer une classe qui hérite des informations de classe
Lorsque vous souhaitez utiliser la méthode à l'extérieur
Comment créer un thème dans Liferay 7 / DXP
[1st] Comment créer un projet de framework Spring-MVC
Comment créer facilement un pull-down avec des rails
[Rails] Comment créer un bouton de partage Twitter
[Java] Comment obtenir l'URL redirigée finale
[Java] Comment obtenir l'URL de la source de transition
Comment créer un environnement Java en seulement 3 secondes
[Java] Je souhaite calculer la différence par rapport à la date
Comment passer d'Eclipse Java à un fichier SQL
Comment écrire Scala du point de vue de Java
Comment déployer à partir d'une image Docker locale vers Heroku
[Java] Comment extraire le nom du fichier du chemin
Comment créer un projet Spring Boot dans IntelliJ
[Spring Boot] Comment créer un projet (pour les débutants)
Que faire si vous créez accidentellement un modèle
Comment créer un URI de données (base64) en Java
[Java] Comment effacer un caractère spécifique d'une chaîne de caractères
Comment déterminer la demande de prélecture depuis le navigateur
Comment spécifier le chemin de la ressource dans l'importation HTML
Installez MySQL 5.6 sur CentOS6 [Comment spécifier la version]
Comment faire un MOD pour Slay the Spire
[Offre d'abonnement Apple] Comment créer une signature d'offre promotionnelle
Je souhaite créer une annotation générique pour un type
Je souhaite ajouter une fonction de suppression à la fonction de commentaire