Bird
Raised Fist0
Ruby on Railsframework~20 mins

Root route in Ruby on Rails - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Root Route Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What does this root route configuration do?
Given this Rails route configuration, what will be the behavior when a user visits the root URL of the application?
Ruby on Rails
Rails.application.routes.draw do
  root 'welcome#index'
end
AIt directs the root URL to the index action of the WelcomeController.
BIt causes a syntax error because root must be inside a namespace block.
CIt redirects the root URL to the show action of the WelcomeController.
DIt sets the root URL to render a static HTML page named index.html.
Attempts:
2 left
💡 Hint
Think about what the 'root' method does in Rails routing.
📝 Syntax
intermediate
2:00remaining
Identify the syntax error in this root route declaration
Which option correctly fixes the syntax error in this root route declaration?
Ruby on Rails
Rails.application.routes.draw do
  root to: 'home#main'
  root 'home#main'
end
AChange 'root to:' to 'root from:' to fix the syntax.
BReplace 'root' with 'get' to fix the syntax.
CAdd parentheses: root(to: 'home#main') to fix the syntax.
DRemove the duplicate root line; only one root route is allowed.
Attempts:
2 left
💡 Hint
Rails only allows one root route per application.
❓ state_output
advanced
2:00remaining
What is the output when visiting root with this controller?
Given this controller and root route, what will the user see when visiting '/'?
Ruby on Rails
class HomeController < ApplicationController
  def main
    render plain: 'Welcome Home!'
  end
end

Rails.application.routes.draw do
  root 'home#main'
end
AThe browser renders the default Rails welcome page.
BThe browser shows a 404 Not Found error.
CThe browser displays the text: Welcome Home!
DThe browser displays an empty page with status 200.
Attempts:
2 left
💡 Hint
Look at the render method used in the controller action.
🔧 Debug
advanced
2:00remaining
Why does this root route cause an error?
This root route causes an error when visiting the root URL. What is the cause?
Ruby on Rails
Rails.application.routes.draw do
  root 'dashboard#show'
end
AThe root route must be defined inside a namespace block.
BThere is no DashboardController defined with a show action.
CThe root route must use double quotes, not single quotes.
DThe root route cannot point to a show action.
Attempts:
2 left
💡 Hint
Check if the controller and action exist in the app.
🧠 Conceptual
expert
2:00remaining
What happens if multiple root routes are defined?
Consider this routes file with multiple root routes. What will happen when the Rails server starts?
Ruby on Rails
Rails.application.routes.draw do
  root 'pages#home'
  root 'dashboard#index'
end
ARails raises a routing error because only one root route is allowed.
BRails uses the last root route defined and ignores the first.
CRails merges both root routes and randomly picks one at runtime.
DRails starts normally and both root routes work depending on user role.
Attempts:
2 left
💡 Hint
Think about uniqueness of the root route in Rails routing.

Practice

(1/5)
1. What does the root route do in a Rails application?
easy
A. It specifies the layout template for all pages.
B. It defines a new database table for the app.
C. It creates a new controller automatically.
D. It sets the default page visitors see at the website's base URL.

Solution

  1. Step 1: Understand the purpose of root route

    The root route defines what page loads when someone visits the main URL of the website.
  2. Step 2: Identify what root route sets

    It sets the default controller action to show, so visitors see a starting page without errors.
  3. Final Answer:

    It sets the default page visitors see at the website's base URL. -> Option D
  4. Quick Check:

    Root route = default homepage [OK]
Hint: Root route sets homepage URL view [OK]
Common Mistakes:
  • Confusing root route with database or controller creation
  • Thinking root route sets layout or styles
  • Assuming root route is optional for homepage
2. Which of the following is the correct syntax to set the root route to the home action in the pages controller?
easy
A. root 'pages#home'
B. root to: 'pages#home'
C. root pages#home
D. root => 'pages#home'

Solution

  1. Step 1: Recall root route syntax

    The standard syntax is root 'controller#action' without extra keywords.
  2. Step 2: Check each option

    root 'pages#home' matches the correct syntax exactly. root to: 'pages#home' adds unnecessary to:, C misses quotes, D uses old hash rocket syntax incorrectly.
  3. Final Answer:

    root 'pages#home' -> Option A
  4. Quick Check:

    Syntax = root 'controller#action' [OK]
Hint: Use quotes and # between controller and action [OK]
Common Mistakes:
  • Adding extra keywords like 'to:' incorrectly
  • Omitting quotes around controller#action
  • Using old hash rocket syntax in modern Rails
3. Given this routes file snippet:
Rails.application.routes.draw do
  root 'welcome#index'
  get 'about', to: 'pages#about'
end

What happens when a user visits http://localhost:3000/?
medium
A. The browser redirects to /about automatically.
B. The pages#about action runs and its view is shown.
C. The welcome#index action runs and its view is shown.
D. A routing error occurs because root is not set.

Solution

  1. Step 1: Identify root route action

    The root route is set to welcome#index, so visiting '/' triggers this action.
  2. Step 2: Understand other routes

    The /about path goes to pages#about, but it is not the root URL.
  3. Final Answer:

    The welcome#index action runs and its view is shown. -> Option C
  4. Quick Check:

    Root URL = welcome#index [OK]
Hint: Root route controls '/' URL behavior [OK]
Common Mistakes:
  • Confusing root route with other get routes
  • Expecting automatic redirects without code
  • Assuming missing root causes errors
4. You wrote this in config/routes.rb:
root 'main#home'
root 'dashboard#index'

What is the problem with this code?
medium
A. The syntax is wrong; root needs a block, not a string.
B. You cannot define more than one root route; it causes a conflict.
C. The controller names must be capitalized.
D. This code will work fine and set the root to the last line.

Solution

  1. Step 1: Check root route rules

    Rails allows only one root route. Defining multiple causes conflicts or errors.
  2. Step 2: Analyze given code

    Two root routes are defined, which is invalid and will cause routing errors.
  3. Final Answer:

    You cannot define more than one root route; it causes a conflict. -> Option B
  4. Quick Check:

    Only one root route allowed [OK]
Hint: Only one root route per app allowed [OK]
Common Mistakes:
  • Thinking last root route overrides previous silently
  • Confusing root route syntax with controller naming
  • Believing multiple root routes are valid
5. You want your Rails app to show the landing page from the home controller as the root route, but only if the user is not logged in. Otherwise, it should show dashboard#index. How can you set this up?
hard
A. Set root to a controller action that redirects based on login status.
B. Define two root routes with conditions in routes.rb.
C. Use root 'home#landing' and add a before_action in dashboard.
D. Set root to dashboard#index and ignore login status.

Solution

  1. Step 1: Understand root route limitation

    Rails allows only one root route, so conditional logic must be inside the controller.
  2. Step 2: Implement conditional redirect

    Set root to a controller action (e.g., home#root_redirect) that checks login and redirects accordingly.
  3. Final Answer:

    Set root to a controller action that redirects based on login status. -> Option A
  4. Quick Check:

    Use controller logic for conditional root [OK]
Hint: Use controller action to redirect root conditionally [OK]
Common Mistakes:
  • Trying to set multiple root routes with conditions
  • Ignoring login status in root route setup
  • Assuming routes.rb supports conditional root directly
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