Routes tell your Rails app how to respond to different web addresses. They connect URLs to the right code that shows pages or handles actions.
When you want to show a list of items on a webpage.
When you need to handle a form submission from a user.
When you want to create a link that shows details about a single item.
When you want to organize your app's URLs in a clear way.
When you want to add a new page or feature to your website.
Syntax
Ruby on Rails
Rails.application.routes.draw do
get 'url_path', to: 'controller#action'
post 'url_path', to: 'controller#action'
resources :resource_name
end
get is for showing pages or data.
post is for sending data, like form submissions.
Examples
This route shows the home page when the user visits '/home'.
Ruby on Rails
get 'home', to: 'pages#home'
This route handles sending a new comment to the server.
Ruby on Rails
post 'comments', to: 'comments#create'
This creates many routes automatically for articles, like showing all, creating, editing, and deleting.
Ruby on Rails
resources :articles
Sample Program
This example sets a route for a welcome page and creates all standard routes for books.
Ruby on Rails
Rails.application.routes.draw do
get 'welcome', to: 'pages#welcome'
resources :books
end
OutputSuccess
Important Notes
Routes are checked top to bottom; the first match is used.
Use resources to save time and avoid writing many routes.
Always restart your Rails server after changing routes to see updates.
Summary
Routes connect URLs to controller actions in Rails.
Use get, post, and resources to define routes.
Routes help organize how your app responds to web requests.
Practice
(1/5)
1. What is the purpose of defining routes in the routes.rb file in a Rails application?
easy
A. To manage user sessions
B. To write database queries
C. To style the web pages
D. To connect URLs to specific controller actions
Solution
Step 1: Understand the role of routes in Rails
Routes define how incoming web requests are matched to controller actions.
Step 2: Identify the correct purpose
Connecting URLs to controller actions allows the app to respond correctly to user requests.
Final Answer:
To connect URLs to specific controller actions -> Option D
Quick Check:
Routes link URLs to actions [OK]
Hint: Routes map URLs to controller actions [OK]
Common Mistakes:
Confusing routes with database queries
Thinking routes handle styling
Assuming routes manage sessions
2. Which of the following is the correct syntax to define a GET route for the URL /home that maps to the index action of the pages controller?
easy
A. route get '/home' => 'pages#index'
B. get 'pages#index', to: '/home'
C. get '/home', to: 'pages#index'
D. post '/home', to: 'pages#index'
Solution
Step 1: Recall the syntax for GET routes in Rails
The correct syntax is get 'url', to: 'controller#action'.
Step 2: Match the URL and controller#action correctly
get '/home', to: 'pages#index' correctly uses get '/home', to: 'pages#index'.
Final Answer:
get '/home', to: 'pages#index' -> Option C
Quick Check:
GET route syntax = get 'url', to: 'controller#action' [OK]
Hint: Use get 'url', to: 'controller#action' for GET routes [OK]
Common Mistakes:
Swapping URL and controller#action positions
Using post instead of get for GET routes
Incorrect syntax like 'route get'
3. Given the following route definition in routes.rb:
resources :articles, only: [:index, :show]
What URLs will be available and which controller actions will they map to?
medium
A. /articles (GET) -> articles#index and /articles/:id (GET) -> articles#show
B. /articles/new (GET) -> articles#new and /articles/:id/edit (GET) -> articles#edit
C. /articles (POST) -> articles#create and /articles/:id (PATCH) -> articles#update
D. /articles/:id (DELETE) -> articles#destroy and /articles (GET) -> articles#index
Solution
Step 1: Understand the resources with only option
It limits routes to only index and show actions.
Step 2: Identify URLs and actions for index and show
index maps to GET /articles, show maps to GET /articles/:id.
Final Answer:
/articles (GET) -> articles#index and /articles/:id (GET) -> articles#show -> Option A
Quick Check:
resources with only index, show = GET /articles and GET /articles/:id [OK]
Hint: Only index and show create GET /collection and GET /collection/:id [OK]
Common Mistakes:
Assuming all RESTful routes are created
Confusing HTTP verbs for actions
Mixing up new/edit with index/show
4. Identify the error in this route definition:
get '/profile', controller: 'users', action: 'show'
medium
A. URL should not start with a slash
B. Missing 'to:' keyword before controller#action
C. Should use 'post' instead of 'get'
D. Controller name should be capitalized
Solution
Step 1: Check correct syntax for get route with controller and action
The correct syntax uses to: 'controller#action', not separate keys.
Step 2: Identify the missing 'to:' keyword
The given code misses to: and incorrectly uses separate keys.
Final Answer:
Missing 'to:' keyword before controller#action -> Option B
Quick Check:
Use get '/url', to: 'controller#action' [OK]
Hint: Use 'to:' keyword for controller#action in routes [OK]
Common Mistakes:
Omitting 'to:' keyword
Using wrong HTTP verb
Incorrect URL format
5. You want to create routes for a blog with posts and nested comments. Which route definition correctly creates RESTful routes for posts and nested comments inside routes.rb?
hard
A. resources :posts do
resources :comments
end
B. resources :posts, comments: true
C. resource :posts do
resource :comments
end
D. get '/posts/:post_id/comments', to: 'comments#index' only
Solution
Step 1: Understand nested resources syntax
Nested resources are defined by placing one resources block inside another.
Step 2: Identify correct nested syntax for posts and comments
resources :posts do
resources :comments
end correctly nests comments inside posts using a block.
Final Answer:
resources :posts do
resources :comments
end -> Option A
Quick Check:
Nested resources use block syntax [OK]
Hint: Nest resources inside block for nested routes [OK]
Common Mistakes:
Using singular 'resource' instead of plural 'resources'
Trying to pass nested resources as options
Defining only one route manually
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.