Rails 라우터는 요청 URL을 인식하여 적절한 컨트롤러 액션으로 디스패치하며, 헬퍼를 통해 상호 경로와 URL을 생성합니다.
리소스 기반 라우팅 (resources)
Rails.application.routes.draw do
root "home#index"
resources :articles do
# 멤버 라우트 (특정 항목 대상: /articles/:id/publish)
member do
patch :publish
end
# 컬렉션 라우트 (컬렉션 전체 대상: /articles/search)
collection do
get :search
end
# 중첩 리소스 (/articles/:article_id/comments)
resources :comments, only: [:create, :destroy]
end
end
라우트 경로 헬퍼 (Route Path Helpers)
| 액션 | 경로 헬퍼 | 생성되는 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에 /admin 접두어 추가 및 Admin:: 컨트롤러 네임스페이스 매핑
namespace :admin do
resources :users
end
# /admin/users 요청을 Admin::UsersController 로 라우팅
# Scope: 컨트롤러 네임스페이스 변경 없이 URL 접두어만 추가
scope "/v1" do
resources :posts
end
사용자 정의 단일 라우트 및 리다이렉트
# 커스텀 HTTP 동사 매핑
get '/about', to: 'pages#about'
post '/webhook', to: 'webhooks#receive'
# 301 영구 리다이렉트
get '/stories', to: redirect('/articles')