web-dev-qa-db-de.com

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

Ich kann den Routenstamm meiner Rails App auf einen Controller und eine Aktion setzen.

Aber wie füge ich eine ID hinzu?

/pages/show/1 sollte die Wurzel sein.

Wie stelle ich das ein?

44
Joern Akkermann

Hatte das gleiche Problem und das hat bei mir funktioniert:

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

Ab Rails 4. können Sie die Root-Route folgendermaßen deklarieren:

root 'controller#action'
24
Brian Petro

Matthews Lösung funktioniert, aber ich denke, es ist lesbarer, das Objekt abzurufen. Nehmen wir zum Beispiel an, Sie möchten sich im Page#show Aktion für die Seite mit dem Namen "Landing". Dies ist etwas lesbarer:

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

Aus Sicht der Leistung ist diese Lösung schlechter, da eine zusätzliche Datenbankabfrage erforderlich ist. Diese Lösung ist jedoch besser lesbar, wenn die Leistung keine hohe Priorität hat.

4
Powers

Ich verwende Rails 5.1, um die Homepage auf ein bestimmtes Blog zu verweisen. In config/routes.rb habe ich ...

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

Dies zeigt die Root-Route zu/blogs/1

Ich mache das auf einer Blog-Site, die ich gerade erst baue. Das erste Blog wird sowohl das Blog der Hauptseite als auch die Homepage sein.

Prost

4
WBHauck

Versuchen:

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

In Rails Konsole. rake routes | grep root sollte ungefähr so ​​aussehen:

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

Ich hoffe, das hilft.

3

Verwenden Sie Rails 5.1 Fügen Sie dies zu config/routes.rb hinzu

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