Bird
Raised Fist0
Ruby on Railsframework~20 mins

Nested routes in Ruby on Rails - Practice Problems & Coding Challenges

Choose your learning style10 modes available
Challenge - 5 Problems
🎖️
Nested Routes Mastery
Get all challenges correct to earn this badge!
Test your skills under time pressure!
❓ component_behavior
intermediate
2:00remaining
What URL does this nested route generate?
Given the following Rails routes configuration, what is the URL helper output for post_comment_path(5, 10)?
Ruby on Rails
Rails.application.routes.draw do
  resources :posts do
    resources :comments
  end
end
A"/posts/5/comments/10"
B"/comments/10/posts/5"
C"/posts/10/comments/5"
D"/comments/5/posts/10"
Attempts:
2 left
💡 Hint
Remember nested routes include the parent resource's ID first.
📝 Syntax
intermediate
1:30remaining
Which nested route declaration is valid?
Which of the following nested route declarations is syntactically correct in Rails?
A
resources :posts
  resources :comments
end
B
resources :posts {
  resources :comments
}
C
resources :posts => {
  resources :comments
}
D
resources :posts do
  resources :comments
end
Attempts:
2 left
💡 Hint
Rails uses do...end blocks for nested routes.
❓ state_output
advanced
2:00remaining
What controller and action does this nested route call?
Given this nested route and a GET request to /posts/3/comments/7/edit, which controller and action will handle the request?
Ruby on Rails
Rails.application.routes.draw do
  resources :posts do
    resources :comments
  end
end
ACommentsController#edit
BPostsController#edit
CPostsController#show
DCommentsController#show
Attempts:
2 left
💡 Hint
The URL ends with /edit on a nested resource.
🔧 Debug
advanced
2:00remaining
Why does this nested route URL helper raise an error?
Given this routes file, why does calling post_comment_path(10) raise an error?
Ruby on Rails
Rails.application.routes.draw do
  resources :posts do
    resources :comments
  end
end
Apost_comment_path is not defined for nested routes.
BMissing the post ID argument; nested routes require both post and comment IDs.
CThe routes file is missing a root route, causing all helpers to fail.
Dpost_comment_path expects only one argument, so two are needed.
Attempts:
2 left
💡 Hint
Nested routes require IDs for both parent and child resources.
🧠 Conceptual
expert
2:30remaining
How many routes are created by this nested resources declaration?
How many distinct routes are generated by this nested route declaration?
resources :authors do
  resources :books
end
A10
B7
C14
D21
Attempts:
2 left
💡 Hint
Each resource generates 7 RESTful routes; nesting multiplies them.

Practice

(1/5)
1. What is the main purpose of using nested routes in a Rails application?
easy
A. To speed up database queries automatically
B. To group related resources and show their connection in URLs
C. To create routes without controllers
D. To avoid using RESTful conventions

Solution

  1. Step 1: Understand nested routes concept

    Nested routes group related resources in URLs to reflect their relationship, like a parent and its children.
  2. Step 2: Identify the purpose in URL structure

    This grouping helps keep URLs organized and meaningful, showing the connection between resources.
  3. Final Answer:

    To group related resources and show their connection in URLs -> Option B
  4. Quick Check:

    Nested routes = Group related resources [OK]
Hint: Nested routes show parent-child URL relationships clearly [OK]
Common Mistakes:
  • Thinking nested routes speed up queries
  • Believing nested routes remove need for controllers
  • Assuming nested routes ignore RESTful design
2. Which of the following is the correct syntax to define a nested route for comments inside posts in Rails?
easy
A. resources :comments do resources :posts end
B. resource :posts, :comments
C. resources :posts do resources :comments end
D. resources :posts, nested: :comments

Solution

  1. Step 1: Recall nested route syntax

    In Rails, nested routes are defined by placing resources :child inside a block of resources :parent.
  2. Step 2: Match syntax to example

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

    resources :posts do resources :comments end -> Option C
  4. Quick Check:

    Nested routes syntax = block inside parent resource [OK]
Hint: Use block syntax: parent do child end [OK]
Common Mistakes:
  • Reversing parent and child resources
  • Using commas instead of blocks
  • Using singular resource instead of plural
3. Given the nested routes below, what is the URL helper for editing a comment with ID 5 belonging to post with ID 3?
resources :posts do
  resources :comments
end
medium
A. edit_post_comment_path(3, 5)
B. edit_comment_path(5)
C. edit_post_path(3, 5)
D. edit_comments_post_path(5, 3)

Solution

  1. Step 1: Understand nested URL helpers

    For nested routes, the helper includes both parent and child resource names and IDs, like edit_post_comment_path(post_id, comment_id).
  2. Step 2: Match IDs to parameters

    Post ID is 3, comment ID is 5, so the helper is edit_post_comment_path(3, 5).
  3. Final Answer:

    edit_post_comment_path(3, 5) -> Option A
  4. Quick Check:

    Nested helper = edit_parent_child_path(parent_id, child_id) [OK]
Hint: Nested helpers need parent ID first, then child ID [OK]
Common Mistakes:
  • Using only child ID in helper
  • Swapping parent and child IDs
  • Using plural instead of singular in helper
4. Identify the error in the following nested routes definition:
resources :authors do
  resources :books
resources :publishers
end
medium
A. Should use resource instead of resources for books
B. Cannot nest resources :publishers inside resources :authors
C. No error, syntax is correct
D. Missing end for the resources :authors block

Solution

  1. Step 1: Check block structure

    The resources :authors block opens but does not close before defining resources :publishers.
  2. Step 2: Confirm correct nesting

    Each block must have a matching end. Here, resources :publishers is outside the intended block but inside the authors block without closure.
  3. Final Answer:

    Missing end for the resources :authors block -> Option D
  4. Quick Check:

    Every block needs matching end [OK]
Hint: Count your do/end pairs carefully [OK]
Common Mistakes:
  • Forgetting to close blocks with end
  • Nesting unrelated resources incorrectly
  • Confusing singular and plural resource keywords
5. You want to create nested routes for projects and their tasks, but only allow index and show actions for tasks. Which is the correct way to define this in Rails?
hard
A. resources :projects do resources :tasks, only: [:index, :show] end
B. resources :projects do resources :tasks, except: [:index, :show] end
C. resources :projects, only: [:index, :show] do resources :tasks end
D. resources :projects do resource :tasks, only: [:index, :show] end

Solution

  1. Step 1: Use nested resources with action limits

    To limit actions on nested resources, use only: [:index, :show] inside the nested resources block.
  2. Step 2: Verify correct syntax

    resources :projects do resources :tasks, only: [:index, :show] end correctly nests tasks inside projects and limits actions to index and show.
  3. Final Answer:

    resources :projects do resources :tasks, only: [:index, :show] end -> Option A
  4. Quick Check:

    Limit nested actions with only: [OK]
Hint: Use only: to limit nested resource actions [OK]
Common Mistakes:
  • Using except instead of only
  • Limiting actions on parent instead of child
  • Using singular resource for multiple tasks
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