Rails Routes Hakkında Her Şey
Root route
Resource Routing
Nested Routes
Scoping routes
Concerns
Split routes into multiple files
Member and Collection Routes
Redirection
Root route
- Rotalar config/routes dosyası altında oluşturulur.
- root fonksiyonu kullanarak ana sayfa rotamızı belirleyebiliriz.
Resource Routing
- resources :users ile 7 adet rota oluşturulabilir.
NOT: Hangi methodlara ait rotaların oluşturulacağını seçebiliriz.
Örnek 1: resources :users, only: [:show]
Örnek 2: resources :users, except: [:show, :index]
- rails routes komutu ile bütün rotaları görebiliriz.
- -c parametresi ile bir controller’ a ait olan rotaları listeleyebiliriz.
- -g parametresi ile genel aramalar yapabiliriz.
- Tüm rotalara rails server çalışırken “/rails/info/routes” uzantısından ulaşabiliriz.
Nested Routes
- Eğer dilerseniz iç içe resource’ lar kullanabilirsiniz.
Scoping routes
- namespace: Hem ön ekleri, hem web uzantılarını hem de controller uzantılarını etkiler
- scope: namespace’ e göre biraz daha karmaşıktır fakat daha fazla özelleştirme imkanı sağlar.
- Eğer hiç bir ayar belirmeden kullanırsak sadece web uzantısını etkiler.
2. module ayarının kullanımı ile controller uzantısına etki edebiliriz.
3. path ayarının kullanımı ile web uzantısına etki edebiliriz.
4. as ayarının kullanımı ile ön eke etki edebiliriz.
Concerns
- İç içe resource kullanımında kendimizi tekrarlamamak için bu yapının kullanılması
İki defa resource :image kullandığımız bir senaryo düşünelim
Bunun yerine resource :image ögesini bir değişkene atayarak o değişkeni çağırabiliriz.
Haydi bir örnek daha verelim.
Split routes into multiple files
Eğer route dosyanız kontrol edebileceğinizden çok daha büyük boyutlara ulaşmış ile require_relative metodundan yararlanabilirsiniz.
Member and Collection Routes
“A member route will require an ID, because it acts on a member. A collection route doesn’t because it acts on a collection of objects.”
- member: member bir id’ ye ihtiyaç duyar çünkü adından da anlaşılacağı üzere birinin üyesidir.
- collection: Spesifik olarak bir nesneye ihtiyaç duymaz çünkü nesnelerin tamamını temsil eder.
Alternatif bir kullanım:
Redirection
Belirlemiş olduğunuz bazı rotaları yeni rotalara yönlendirebilirsiniz.
- /stories’ e yapılan istekler /articles’ a yönlendirilecektir.
- /stories/ata’ ya gelen bir istek /articles/ata’ ya yönlendirilecektir.
- Varsayılan yeniden yönlendirmenin 301 “Kalıcı Olarak Taşındı” yönlendirmesi olduğunu lütfen unutmayın. Bazı web tarayıcılarının veya proxy sunucularının bu tür yönlendirmeleri önbelleğe alarak eski sayfayı erişilemez hale getireceğini unutmayın. Yanıt durumunu değiştirmek için :status seçeneğini kullanabilirsiniz.
Scope available locales
- Eğer uygulamanız farklı dilleri destekliyorsa genellikle sitenin dilini uygulamada gösterirsiniz.
Kaynakça: