web-dev-qa-db-fra.com

Rails Routage (root: to => ...)

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

Mais comment ajouter un identifiant?

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

Comment régler cela?

44
Joern Akkermann

Eu ce même problème et cela a fonctionné pour moi:

root :to => "pages#show", :id => '1'
70
Matthew D.

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

root 'controller#action'
24
Brian Petro

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 rooter le Page#show action pour la page avec le nom "landing". 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.

4
Powers

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 du site principal ainsi que la page d'accueil.

À votre santé

4
WBHauck

Essayer:

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

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

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

J'espère que ça t'as aidé.

3
Christian Fazzini

Utilisez Rails 5.1 Ajoutez ceci à la config/routes.rb

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