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?
Hatte das gleiche Problem und das hat bei mir funktioniert:
root :to => "pages#show", :id => '1'
Ab Rails 4. können Sie die Root-Route folgendermaßen deklarieren:
root 'controller#action'
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.
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
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.
Verwenden Sie Rails 5.1 Fügen Sie dies zu config/routes.rb hinzu
root 'pages#show', {id: 1}