📖 Scenario: You are building a simple blog application where users can view a list of posts and see details of each post.
🎯 Goal: Create named routes for posts and use path helpers in views to link between pages.
📋 What You'll Learn
Define a resourceful route for posts in config/routes.rb
Create a variable called post_id with the value 5
Use the named route helper posts_path to link to the posts index
Use the named route helper post_path(post_id) to link to a specific post
💡 Why This Matters
🌍 Real World
Named routes and path helpers are used in Rails apps to create clean, readable links between pages like lists and details.
💼 Career
Understanding named routes is essential for Rails developers to build maintainable navigation and follow Rails conventions.
Progress0 / 4 steps
1
Define resourceful routes for posts
In config/routes.rb, add a resourceful route for posts using resources :posts.
Ruby on Rails
Hint
Use resources :posts to create all standard routes for posts.
2
Create a variable for a post ID
In a controller or view file, create a variable called post_id and set it to 5.
Ruby on Rails
Hint
Just write post_id = 5 to create the variable.
3
Use posts_path helper to link to posts index
In a view file, use the named route helper posts_path inside a link tag to create a link to the posts index page. Write link_to 'All Posts', posts_path.
Ruby on Rails
Hint
Use link_to 'All Posts', posts_path to create the link.
4
Use post_path(post_id) helper to link to a specific post
In the same view file, use the named route helper post_path(post_id) inside a link tag to create a link to the post with ID 5. Write link_to 'View Post', post_path(post_id).
Ruby on Rails
Hint
Use link_to 'View Post', post_path(post_id) to link to the post detail page.
Practice
(1/5)
1. What is the main purpose of named routes in Rails?
easy
A. To automatically generate database tables
B. To style HTML elements with CSS
C. To give easy-to-use names for URLs in the app
D. To handle user authentication
Solution
Step 1: Understand named routes concept
Named routes assign simple names to URL patterns in Rails routes file.
Step 2: Identify their purpose
These names help generate URL or path helpers for cleaner, readable code.
Final Answer:
To give easy-to-use names for URLs in the app -> Option C
Quick Check:
Named routes = URL names [OK]
Hint: Named routes = easy URL names for helpers [OK]
Common Mistakes:
Confusing named routes with database features
Thinking named routes style HTML
Mixing named routes with authentication
2. Which syntax correctly defines a named route for a 'profile' page in config/routes.rb?
easy
A. get '/profile', to: 'users#show', as: 'profile'
B. route '/profile' => 'users#show', name: 'profile'
C. get '/profile' => 'users#show', named: 'profile'
D. path '/profile', controller: 'users', action: 'show', alias: 'profile'
Solution
Step 1: Recall correct named route syntax
Rails uses get '/url', to: 'controller#action', as: 'name' format.
Step 2: Match options to syntax
get '/profile', to: 'users#show', as: 'profile' matches this exactly; others use invalid keywords.
Final Answer:
get '/profile', to: 'users#show', as: 'profile' -> Option A
Quick Check:
Correct named route syntax = get '/profile', to: 'users#show', as: 'profile' [OK]
Hint: Use 'get', 'to:', and 'as:' for named routes [OK]
Common Mistakes:
Using wrong keywords like 'route' or 'named'
Mixing hash rocket and symbol syntax incorrectly
Forgetting 'as:' for naming the route
3. Given this route: get '/dashboard', to: 'home#dashboard', as: 'dashboard', what does dashboard_path return?
medium
A. '/dashboard_path'
B. '/home/dashboard'
C. 'dashboard_url'
D. '/dashboard'
Solution
Step 1: Understand named route helper
The named route 'dashboard' creates dashboard_path helper returning the URL path string.
Step 2: Match helper output
Since route is '/dashboard', dashboard_path returns '/dashboard'.
Final Answer:
'/dashboard' -> Option D
Quick Check:
dashboard_path = '/dashboard' [OK]
Hint: Named route 'foo' creates 'foo_path' returning URL path [OK]
Common Mistakes:
Confusing _path with _url helpers
Expecting controller/action strings
Adding extra suffixes like '_path' in output
4. Identify the error in this route definition: get '/items', to: 'items#index', as: items_path
medium
A. The HTTP verb 'get' is incorrect here
B. The named route should be a symbol or string, not a method call
C. The controller action 'items#index' is invalid syntax
D. The URL path '/items' must not start with a slash
Solution
Step 1: Check named route naming
The as: option expects a symbol or string name, not a method call like items_path.
Step 2: Identify correct usage
It should be as: :items or as: 'items' to create items_path helper.
Final Answer:
The named route should be a symbol or string, not a method call -> Option B
Quick Check:
Use symbol/string for 'as:' [OK]
Hint: Use symbol/string for 'as:', not helper method call [OK]
Common Mistakes:
Passing helper method name instead of symbol/string
Misunderstanding 'as:' purpose
Thinking HTTP verb or path is wrong here
5. You want to create a named route for editing a user profile with URL /users/:id/edit. Which route definition and helper usage is correct?
hard
A. Route: get '/users/:id/edit', to: 'users#edit', as: 'edit_user'; Helper: edit_user_path(5)
B. Route: get '/users/edit/:id', to: 'users#edit', as: 'edit_user'; Helper: edit_user_path(5)
C. Route: get '/users/:id/edit', to: 'users#edit', as: :edit_user; Helper: edit_user_url
D. Route: get '/users/edit/:id', to: 'users#edit', as: :edit_user; Helper: edit_user_path
Solution
Step 1: Confirm correct URL pattern
The edit user URL is conventionally '/users/:id/edit'.
Step 2: Check named route and helper usage
Route: get '/users/:id/edit', to: 'users#edit', as: 'edit_user'; Helper: edit_user_path(5) uses string for 'as:' and calls edit_user_path(5) which is correct. Route: get '/users/:id/edit', to: 'users#edit', as: :edit_user; Helper: edit_user_url uses symbol but calls edit_user_url without argument, which is incomplete.
Final Answer:
Route: get '/users/:id/edit', to: 'users#edit', as: 'edit_user'; Helper: edit_user_path(5) -> Option A
Quick Check:
Correct path + named route + helper call = Route: get '/users/:id/edit', to: 'users#edit', as: 'edit_user'; Helper: edit_user_path(5) [OK]
Hint: Use '/users/:id/edit' and call edit_user_path(id) [OK]
Common Mistakes:
Swapping :id and 'edit' in URL path
Using _url helper without required id argument
Using symbol/string inconsistently for 'as:'
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.