Der Rails-Router erkennt URLs und leitet sie an Controller-Aktionen weiter, während er gleichzeitig reziproke Pfade und URLs über Helper-Methoden generiert.
Ressourcenbasierte Routen (resources)
Rails.application.routes.draw do
root "home#index"
resources :articles do
# Member-Routen (operiert auf bestimmtem Element /articles/:id/publish)
member do
patch :publish
end
# Collection-Routen (operiert auf /articles/search)
collection do
get :search
end
# Verschachtelte Ressourcen (/articles/:article_id/comments)
resources :comments, only: [:create, :destroy]
end
end
Routen-Pfad-Helper (Route Path Helpers)
| Aktion | Pfad-Helper | Generierte URL |
|---|---|---|
index |
articles_path |
/articles |
show |
article_path(@article) |
/articles/:id |
new |
new_article_path |
/articles/new |
edit |
edit_article_path(@article) |
/articles/:id/edit |
Namespaces & Scopes
# Namespace: URL mit /admin und Controller mit Admin:: voranstellen
namespace :admin do
resources :users
end
# Routet zu Admin::UsersController unter /admin/users
# Scope: URL-Präfix ohne Änderung des Controller-Namespace
scope "/v1" do
resources :posts
end
Benutzerdefinierte Einzelrouten & Weiterleitungen
# Benutzerdefiniertes Verb-Mapping
get '/about', to: 'pages#about'
post '/webhook', to: 'webhooks#receive'
# 301 Permanente Weiterleitung
get '/stories', to: redirect('/articles')