50 votes

Routage des rails (root :to => ...)

Je sais comment définir la racine des routes de mon application rails sur un contrôleur et une action.

Mais comment ajouter un identifiant ?

/pages/show/1 devrait être la racine.

Comment puis-je définir cela ?

80voto

Matthew D. Points 326

J'ai eu le même problème et cela a fonctionné pour moi:

 root :to => "pages#show", :id => '1'

32voto

Brian Petro Points 863

Depuis Rails 4.0 , vous pouvez déclarer la route racine comme ceci :

 root 'controller#action'

6voto

SMHauck Points 71

J'utilise Rails 5.1 pour pointer la page d'accueil vers un blog spécifique. Dans config/routes.rb j'ai...

 root 'blogs#show', {id: 1}

Cela pointera la route racine vers /blogs/1

Je fais cela sur un site de blog que je construis. Le premier blog sera le blog principal du site ainsi que la page d'accueil.

À votre santé

4voto

Powers Points 1742

La solution de Matthew fonctionne, mais je pense qu'il est plus lisible de récupérer l'objet. Par exemple, supposons que vous souhaitiez vous connecter à l'action Page#show pour la page portant le nom « atterrissage ». C'est un peu plus lisible :

 root :to => "pages#show", :id => Page.find_by_name("landing").id

Du point de vue des performances, cette solution est pire car elle nécessite une requête de base de données supplémentaire, mais cette solution est plus lisible si les performances ne sont pas une priorité élevée.

3voto

Christian Fazzini Points 7446

Essayer:

  match 'pages/show/:id' => 'pages#show', :as => :root

Dans la console Rails. rake routes | grep root , devrait afficher quelque chose comme :

 root     /pages/show/:id(.:format)      {:controller=>"pages", :action=>"show"}

J'espère que cela pourra aider.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X