2011-06-29 11 views

Odpowiedz

57

miał ten sam problem i to pracował dla mnie: rozwiązanie

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

To jest dobre, z wyjątkiem tego root_path() jest teraz dodanie 'id = 1 'do URL przy połączonej z innym w aplikacji ... – msanteler

+0

@MatthewD - ciekawy dlaczego chcesz trasę korzeniowy wskazywać na id jednego? – BKSpurgeon

2

Spróbuj:

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

W Rails konsoli. rake routes | grep root powinien pokazać coś takiego:

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

nadzieję, że pomoże.

4

Mateusza działa, ale myślę, że jest bardziej czytelny, aby pobrać obiekt. Na przykład, powiedzmy, że chcesz rootować do akcji Page#show dla strony o nazwie "landing". Jest to nieco bardziej czytelny:

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

Z punktu widzenia wydajności, to rozwiązanie jest gorsze, ponieważ wymaga dodatkowego zapytania do bazy danych, ale to rozwiązanie jest bardziej czytelny, jeśli wydajność nie jest priorytetem.

19

Od Rails 4.0 można zadeklarować trasę korzeniowy tak:

root 'controller#action' 
+1

Ale jak włączyć: id do trasy? – dlu

2

Używam Rails 5.1 wskazać stronę główną do konkretnego blogu. W config/routes.rb mam ...

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

ta wskaże drogę root/blogi/1

Robię to na blogu buduję. Pierwszy blog będzie głównym blogiem strony, a także stroną domową. ?

Cheers