Bird
Raised Fist0
Ruby on Railsframework~10 mins

Route parameters in Ruby on Rails - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to define a route that captures an :id parameter.

Ruby on Rails
get '/products/[1]', to: 'products#show'
Drag options to blanks, or click blank then click option'
A*id
Bid
C:id
D?id
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting the colon before the parameter name.
Using a question mark or asterisk instead of a colon.
2fill in blank
medium

Complete the code to access the route parameter :id inside the controller action.

Ruby on Rails
def show
  @product = Product.find(params[[1]])
end
Drag options to blanks, or click blank then click option'
A:id
B'id'
Cid
D:'id'
Attempts:
3 left
💡 Hint
Common Mistakes
Omitting quotes around the key (syntax error with bare id).
Using ":id" (accesses nonexistent params[":id"]).
3fill in blank
hard

Fix the error in the route to correctly capture a username parameter.

Ruby on Rails
get '/users/[1]', to: 'users#profile'
Drag options to blanks, or click blank then click option'
A:username
Busername
C*username
D?username
Attempts:
3 left
💡 Hint
Common Mistakes
Omitting the colon before the parameter name.
Using wildcard or query syntax instead of colon.
4fill in blank
hard

Fill both blanks to define a nested route with :post_id and :comment_id parameters.

Ruby on Rails
get '/posts/[1]/comments/[2]', to: 'comments#show'
Drag options to blanks, or click blank then click option'
A:post_id
Bpost_id
C:comment_id
Dcomment_id
Attempts:
3 left
💡 Hint
Common Mistakes
Leaving out colons before parameter names.
Using parameter names without colon prefixes.
5fill in blank
hard

Fill all three blanks to define a route with :category, :id, and :format parameters.

Ruby on Rails
get '/[1]/[2].[3]', to: 'items#show'
Drag options to blanks, or click blank then click option'
A:category
B:id
C:format
Dformat
Attempts:
3 left
💡 Hint
Common Mistakes
Forgetting colons before parameter names.
Not including the dot before the format parameter.

Practice

(1/5)
1. What does a route parameter in Rails do?
get '/users/:id', to: 'users#show'
easy
A. Captures part of the URL as a variable to use in the controller
B. Defines a fixed URL path without variables
C. Specifies the HTTP method to use
D. Sets the controller action to redirect to another page

Solution

  1. Step 1: Understand the colon in the route path

    The colon before id means this part of the URL is a variable, called a route parameter.
  2. Step 2: Role of route parameters in Rails

    This variable is captured from the URL and passed to the controller action for use, like finding a user by ID.
  3. Final Answer:

    Captures part of the URL as a variable to use in the controller -> Option A
  4. Quick Check:

    Route parameter = URL variable [OK]
Hint: Colon before name means URL part is a variable [OK]
Common Mistakes:
  • Thinking route parameters define fixed paths
  • Confusing route parameters with HTTP methods
  • Assuming route parameters redirect to other pages
2. Which of the following is the correct syntax to define a route with a parameter named post_id in Rails?
easy
A. get '/posts/post_id', to: 'posts#show'
B. get '/posts/{post_id}', to: 'posts#show'
C. get '/posts/<post_id>', to: 'posts#show'
D. get '/posts/:post_id', to: 'posts#show'

Solution

  1. Step 1: Identify correct route parameter syntax

    In Rails, route parameters use a colon before the name, like :post_id.
  2. Step 2: Compare options

    Only get '/posts/:post_id', to: 'posts#show' uses the colon syntax correctly. Others use incorrect braces or no colon.
  3. Final Answer:

    get '/posts/:post_id', to: 'posts#show' -> Option D
  4. Quick Check:

    Colon before parameter name = correct syntax [OK]
Hint: Use colon before parameter name in route path [OK]
Common Mistakes:
  • Using curly braces or angle brackets instead of colon
  • Omitting colon before parameter name
  • Confusing parameter syntax with query strings
3. Given this route:
get '/products/:id', to: 'products#show'
And this controller code:
def show
  @product_id = params[:id]
end

What will @product_id be if the URL is /products/42?
medium
A. The string '42'
B. The integer 42
C. nil
D. An error because params[:id] is undefined

Solution

  1. Step 1: Understand route parameter capture

    The :id in the route captures the URL part '42' as a string in params[:id].
  2. Step 2: Assigning params value in controller

    The controller assigns @product_id = params[:id], so @product_id is the string '42'. Rails does not convert it automatically to integer.
  3. Final Answer:

    The string '42' -> Option A
  4. Quick Check:

    Route params are strings by default [OK]
Hint: Route params are strings unless converted [OK]
Common Mistakes:
  • Assuming params[:id] is an integer automatically
  • Expecting nil if parameter is present
  • Thinking params[:id] causes an error if defined in route
4. Identify the error in this route definition:
get '/orders/:order_id/items/:item_id', to: 'orders#item'

Controller action:
def item
  @order = Order.find(params[:id])
  @item = Item.find(params[:item_id])
end
medium
A. Route path should not have two parameters
B. params[:id] is incorrect; should be params[:order_id]
C. Controller action name should be 'show' not 'item'
D. Item.find should use params[:id] instead of params[:item_id]

Solution

  1. Step 1: Check route parameters names

    The route defines parameters :order_id and :item_id, so params keys are :order_id and :item_id.
  2. Step 2: Check controller parameter usage

    The controller incorrectly uses params[:id] which does not exist. It should use params[:order_id] to find the order.
  3. Final Answer:

    params[:id] is incorrect; should be params[:order_id] -> Option B
  4. Quick Check:

    Parameter names must match route keys [OK]
Hint: Match params keys exactly to route parameter names [OK]
Common Mistakes:
  • Using generic :id when route uses :order_id
  • Thinking multiple parameters are not allowed
  • Confusing controller action names with route parameters
5. You want to create a nested route to show a comment belonging to a post using route parameters. Which route definition correctly captures both post_id and id for the comment?
hard
A. get '/posts/:id/comments/:post_id', to: 'comments#show'
B. get '/posts/comments/:post_id/:id', to: 'comments#show'
C. get '/posts/:post_id/comments/:id', to: 'comments#show'
D. get '/comments/:id/posts/:post_id', to: 'comments#show'

Solution

  1. Step 1: Understand nested resource URL structure

    Nested routes usually put the parent resource first, then the child. Here, post_id comes before id for comment.
  2. Step 2: Check route parameter order and names

    get '/posts/:post_id/comments/:id', to: 'comments#show' correctly uses /posts/:post_id/comments/:id capturing post's ID and comment's ID in order.
  3. Final Answer:

    get '/posts/:post_id/comments/:id', to: 'comments#show' -> Option C
  4. Quick Check:

    Parent ID first, child ID second in nested routes [OK]
Hint: Parent resource param before child in nested routes [OK]
Common Mistakes:
  • Swapping order of post_id and comment id
  • Putting parameters in wrong positions
  • Using incorrect parameter names
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