Hi all am learning rails 3.2.8 and i found that in routes if i have a controller called User and i have 5 def a, def b,def c and def d. do i need to mention routes to each def because in 2.3.8 you no need to mention routes for each def but when i come to 3.2.8 i have to mention routes for each def in a controller like
match ‘user/new’ => ‘user#new’
match ‘user/create’ => ‘user#create’
such way for each def in a controller. is there any other way to write a routes so that you no need to mention routes for each def.
You can use resources in following three different ways.
resources :users
All the methods in Users controller will have routes defined if you add above line in your routes.rb file. For example users controller have method #index then you will be able to open the url http://localhost:3000/users.
resources :users, :only => [:show, :new, :create]
If you use the above line in routes.rb then you will be able to just use the show, new and create actions of your controller.
Not quite - only the 7 standard actions (new / create / show / index / edit / update / destroy) will be routed. You can write URLs that look like they go to other actions (/users/some_other_thing) but they’ll actually be routed to the show action.
The Routing guide is a great reference for this stuff: