Rails Routes Hakkında Her Şey

İçindekiler:

Ata Günay
Fazla
4 min readAug 15, 2022

--

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.
Kullanımı
Sonuç

Scoping routes

  • namespace: Hem ön ekleri, hem web uzantılarını hem de controller uzantılarını etkiler
Kullanımı
Sonuç
  • scope: namespace’ e göre biraz daha karmaşıktır fakat daha fazla özelleştirme imkanı sağlar.
  1. Eğer hiç bir ayar belirmeden kullanırsak sadece web uzantısını etkiler.
Kullanımı
Sonuç

2. module ayarının kullanımı ile controller uzantısına etki edebiliriz.

Kullanımı
Sonuç

3. path ayarının kullanımı ile web uzantısına etki edebiliriz.

Kullanımı
Sonuç

4. as ayarının kullanımı ile ön eke etki edebiliriz.

Kullanımı
Sonuç

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

1. Kullanım
2. Kullanım

Bunun yerine resource :image ögesini bir değişkene atayarak o değişkeni çağırabiliriz.

Çözüm

Haydi bir örnek daha verelim.

Concern tanımlanması
Kullanımı
Sonuç

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.
Kullanımı
Sonuç
  • collection: Spesifik olarak bir nesneye ihtiyaç duymaz çünkü nesnelerin tamamını temsil eder.
Kullanımı
Sonuç

Alternatif bir kullanım:

Redirection

Belirlemiş olduğunuz bazı rotaları yeni rotalara yönlendirebilirsiniz.

  • /stories’ e yapılan istekler /articles’ a yönlendirilecektir.
Örnek 1
  • /stories/ata’ ya gelen bir istek /articles/ata’ ya yönlendirilecektir.
Örnek 2
  • 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.
ör: uygulama_ismi/en/home_page

Kaynakça:

  1. Ruby on Rails Notes for Professionals
  2. https://guides.rubyonrails.org
  3. https://devblast.com
  4. https://stackoverflow.com/questions/3028653/difference-between-collection-route-and-member-route-in-ruby-on-rails
  5. https://blog.appsignal.com/2020/09/16/rails-concers-to-concern-or-not-to-concern.html

--

--