First foray into Rails, and everything’s smooth until I hit step 5 in the Getting Started docs.
After adding the article resource to config/routes.rb:
Adding a new resource, as per initial guide,
“Getting Up and Running”:
Rails.application.routes.draw do
resources :articles
root ‘welcome#index’
end
``
I receive the following error at http://localhost:3000/articles/new:
ArgumentError
Invalid route name, already in use: ‘root’ You may have defined two routes with the same name using the :as
option, or you may be overriding a route already defined by a resource with the same naming. For the latter, you can restrict the routes created with resources
as explained here: Rails Routing from the Outside In — Ruby on Rails Guides
with an indication that the issue is at “root ‘welcome#index’”
What am I missing here?
Enter code here…
``
radar
(Ryan Bigg)
January 24, 2016, 8:02pm
2
Could you please show us your complete config/routes.rb?
Thx, looks like I figured it out. I had inserted the article resource within the body of the ‘welcome/index’ resource.
My current config/routes.rb file now looks lie this, and all is good:
Rails.application.routes.draw do
get ‘welcome/index’
The priority is based upon order of creation: first created → highest priority.
See how all your routes lay out with “rake routes”.
You can have the root of your site routed with “root”
root ‘welcome#index’
Example of regular route:
get ‘products/:id’ => ‘catalog#view’
Example of named route that can be invoked with purchase_url(id: product.id)
get ‘products/:id/purchase’ => ‘catalog#purchase’, as: :purchase
Example resource route (maps HTTP verbs to controller actions automatically):
resources :products
Example resource route with options:
resources :products do
member do
get ‘short’
post ‘toggle’
end
radar
(Ryan Bigg)
January 25, 2016, 1:02am
4
You’re defining two Rails.application.routes.draw blocks there. You should only be defining one.