728x90
반응형
Ruby on Rails에서 라우팅은 웹 애플리케이션의 입구 역할을 합니다. 브라우저에서 /posts와 같은 URL을 입력했을 때 어떤 컨트롤러의 어떤 액션이 실행되어야 하는지를 결정하죠. 이 모든 것은 config/routes.rb 파일에서 이루어집니다. 이번 글에서는 Rails의 라우팅 시스템을 구조적으로 이해하고, 실전 예제와 함께 config/routes.rb 파일을 능숙하게 다루는 방법을 배워봅니다.
🚦 기본 구조
# config/routes.rb
Rails.application.routes.draw do
resources :posts
end
resources :posts는 단 한 줄로 다음과 같은 7개의 RESTful 라우트를 자동 생성합니다:
| HTTP Verb | URL | Controller#Action |
|---|---|---|
| GET | /posts | posts#index |
| GET | /posts/new | posts#new |
| POST | /posts | posts#create |
| GET | /posts/:id | posts#show |
| GET | /posts/:id/edit | posts#edit |
| PATCH | /posts/:id | posts#update |
| DELETE | /posts/:id | posts#destroy |
🔍 단일 라우팅: get, post, patch, delete
단순한 라우트를 만들고 싶을 때는 이렇게 사용합니다:
get '/about', to: 'pages#about'
post '/contact', to: 'pages#contact'
GET /about 요청이 오면 PagesController의 about 액션이 실행됩니다.
🧱 루트 설정
root 'home#index'
이 설정은 메인 도메인(/)에 접속했을 때 HomeController의 index 액션이 실행되도록 합니다.
🌱 중첩 라우팅 (Nested Resources)
resources :posts do
resources :comments
end
위 코드로 다음과 같은 중첩된 URL 구조가 만들어집니다:
/posts/:post_id/comments/posts/:post_id/comments/:id
이는 댓글이 특정 게시글에 종속되어 있다는 것을 의미하죠.
⚙️ only / except 옵션
필요한 라우트만 정의하고 싶다면 only 또는 except를 활용하세요:
resources :posts, only: [:index, :show]
resources :posts, except: [:destroy]
📌 커스텀 멤버/컬렉션 라우트
resources :posts do
member do
get 'preview'
end
collection do
get 'archive'
end
end
/posts/:id/preview→ 개별 포스트의 미리보기/posts/archive→ 전체 포스트 중 보관글 보기
🔎 라우트 확인하기
$ bin/rails routes
이 명령어를 입력하면 현재 설정된 모든 라우트와 연결된 컨트롤러 액션을 한눈에 볼 수 있습니다.
🎯 마치며
routes.rb는 단순한 URL 매핑 이상의 의미를 갖습니다. 애플리케이션의 전체 구조와 흐름을 연결짓는 중요한 설계도죠. 오늘 배운 내용을 바탕으로 라우트 파일을 적극적으로 커스터마이징하며 더 유연한 웹앱을 만들어보세요!
728x90
반응형
'Ruby On Rails' 카테고리의 다른 글
| Rails에서의 MVC 구조 진짜 제대로 파보기 (2) | 2025.07.08 |
|---|---|
| ActiveRecord로 데이터 다루기 — CRUD의 정석 (0) | 2025.07.07 |
| 첫 번째 Rails 앱 만들기 — Blog 프로젝트로 배우는 MVC (0) | 2025.07.05 |
| RoR 개발환경 구축 — macOS, Windows에서 시작하기 (1) | 2025.07.04 |
| Ruby on Rails란 무엇인가? — 장인의 웹 프레임워크 입문기 (2) | 2025.07.03 |
