2011-09-01 7 views
5

db'de iki kayıt bulunan bir sayfa denetleyicim var; 'sayfalar' ve 'iletişim'. Her sayfa kaydı için kimlik başlığıdır. Her sayfa için belirli bir rota nasıl yazılır?raylar belirli bir kimlik için rota

Şu anda çalışan bir catch-all rotayı ...

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

var ama ben çünkü muhtemelen sorunuzu anlamıyorum her sayfanın

cevap

8

için tek rota oluşturmak istiyoruz Bunu neden yapmak isteyeceğiniz hakkında hiçbir fikriniz yok;)

Neyse, bir sayfanızın başlık/id "hakkında" olduğunu varsayalım. Rotanız bu gibi olabilir:

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

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

Not: Zaten kullandığınız rotayı "catchall" olarak adlandırmam; Oldukça normal Rails rotası. Bu benim herkesi kucaklayan dediğimiz olur ise:

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

Ben bu yüzden yol yardımcıları olabilir bunları belirtmek istiyorum, bu yüzden artık maç var => 'sayfalarında # gösterisi', '/ hakkında': varsayılan => { : id => 'about'},: as =>: yaklaşık –

+1

Yakında. Belki de bunu zaten düşündünüz, ancak kodu tekrar etmemek için orijinal rotanız ile gidip, ': as =>: page' ekleyin ve yol yardımcısını kullanın page_path (: id => 'about')'. –