Bird
Raised Fist0
Ruby on Railsframework~5 mins

Route definition in routes.rb in Ruby on Rails

Choose your learning style10 modes available
Introduction

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

  1. Step 1: Understand the role of routes in Rails

    Routes define how incoming web requests are matched to controller actions.
  2. Step 2: Identify the correct purpose

    Connecting URLs to controller actions allows the app to respond correctly to user requests.
  3. Final Answer:

    To connect URLs to specific controller actions -> Option D
  4. 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

  1. Step 1: Recall the syntax for GET routes in Rails

    The correct syntax is get 'url', to: 'controller#action'.
  2. Step 2: Match the URL and controller#action correctly

    get '/home', to: 'pages#index' correctly uses get '/home', to: 'pages#index'.
  3. Final Answer:

    get '/home', to: 'pages#index' -> Option C
  4. 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

  1. Step 1: Understand the resources with only option

    It limits routes to only index and show actions.
  2. Step 2: Identify URLs and actions for index and show

    index maps to GET /articles, show maps to GET /articles/:id.
  3. Final Answer:

    /articles (GET) -> articles#index and /articles/:id (GET) -> articles#show -> Option A
  4. 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

  1. Step 1: Check correct syntax for get route with controller and action

    The correct syntax uses to: 'controller#action', not separate keys.
  2. Step 2: Identify the missing 'to:' keyword

    The given code misses to: and incorrectly uses separate keys.
  3. Final Answer:

    Missing 'to:' keyword before controller#action -> Option B
  4. 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

  1. Step 1: Understand nested resources syntax

    Nested resources are defined by placing one resources block inside another.
  2. Step 2: Identify correct nested syntax for posts and comments

    resources :posts do resources :comments end correctly nests comments inside posts using a block.
  3. Final Answer:

    resources :posts do resources :comments end -> Option A
  4. 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 unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard