2011-09-01 16 views
5

Mam kontroler stron z dwoma rekordami w db; "strony" i "kontakt". Identyfikatorem każdego rekordu strony jest tytuł. Jak utworzyć konkretną trasę dla każdej strony?trasa trasy do określonego identyfikatora

Obecnie mam catch-all trasę, która działa ...

match '/:id' => 'pages#show' 

ale chcę, aby utworzyć pojedynczy trasy dla każdej strony

Odpowiedz

8

pewnie nie rozumiem pytanie, bo mam nie mam pojęcia, dlaczego chciałbyś to zrobić;)

W każdym razie powiedz, że masz stronę o tytule/identyfikatorze "o". Tak może wyglądać Twoja trasa:

match '/about' => 'pages#show', :defaults => { :id => 'about' } 

cf. http://guides.rubyonrails.org/routing.html#defining-defaults

Uwaga: nie nazwałbym trasy, z której korzystasz już "catchall"; to całkiem normalna trasa Railsowa. To jest to, co nazywam catchall:

match ':controller(/:action(/:id))' 
+0

Chcę je określić, więc mogę mieć pomocników ścieżek, więc mam teraz dopasowanie "/ about" => 'pages # show',: defaults => { : id => 'about'},: as =>: about –

+1

Gotcha. Być może już to rozważałeś, ale w interesie nie powtarzania kodu podążałem z twoją pierwotną trasą, dodawałem ': as =>: page' i używałam ścieżki helpera' page_path (: id => 'about') '. –

Powiązane problemy