RESOURCES creates = GET: index (Display a list of all photos) GET: new (return an HTML form for creating a new photo) POST: create (create a new photo) GET: show (display a specific photo) GET: edit (return an HTML form for editing a photo) PUT: update (update a specific photo) DELETE: destroy (delete a specific photo)
Never Cross Some Egret Unless Dead. Never Cross Shad E Unless Desparate. No Church Says Evil Unites Dead. Narrowly Can Some Escape UnDead.
In the case of resources :photos photo_path returns /photos new_photo_path returns /photos/new edit_photo_path(:id) returns /photo/:id/edit (for instance, edit_photo_path(10) returns /photos/10/edit) photo_path(:id) returns /photos/:id (for instance, photo_path(10) returns /photos/10)
Each of these helpers has a corresponding _url helper (such as photo_url) which returns the same path prefixed with the current host, port, and path prefix.
Because the router uses the HTTP verb and IRL to match inbound requests, 4 URLs map to 7 different actions.
Singular resources map to plural controllers: /account vs. /accounts/45
A singular resourceful route generates these helpers:
new_geocoder_path returns /geocoder/new edit_geocoder_path returns /geocoder/edit geocoder_path returns /geocoder As with plural resources, the same helpers enging in _url will also include the host, port, and path prefix.
WHEN YOU GENERATE, IT ADDS ROUTES TO YOUR CONFIG FILE.
get “demo/index” === match “demo/index, :to => “demo#index”
DEFAULT ROUTE STRUCTURE LOWEST PRIORITY (Put it at the bottom)
:controller/:action/:id
GET /students/edit/52
StudentsControllers / edit action match ‘:controller(/:action(:id(.:format)))’
ROUTE ROUTE HIGHEST PRIORITY (Put it at the top)
root :to => “demo#index”
You can specify a name for any route using the :as option. match ‘exit’ => ‘sessions#destroy’, :as => :logout
Optional parameters go in ()’s.
Constraints :constraints => { :year => /\d{4}/, :month => /\d{2}/ } etc. :user_agent - specify a specific browser :host -
Controllers are plural. For basic CRUD, On controller per model, plural names, capitalized Allows for clear URLs subjects/new, subject/list pages/new, pages/list sections/new, sections/list
--------------------------------------------------------------------------------------------------- To create paths and links example: resources :photos It will create all 7 routes for you. To check the routes create type “rake routes” into your terminalthe action refers to your methods within the controller, the name :photos refers to the controller.
photos_path
- returns /photos
new_photo_path - returns /photos/new
edit_photo_path(:id) - returns /photos/:id/edit (for instance,edit_photo_path(10) returns /photos/10/edit)
photo_path(:id) - returns /photos/:id (for instance, photo_path(10) returns/photos/10)
resources :users, only: [:index, :new, :create] resources :users, except: [:delete]
match '/home' => 'users#index'
root_to => '/profile'
@patient = Patient.find(17) <%= link_to “Patient Record”, patient_path(@patient) %> - Rails will get the @patient.id for you.
link_to "Profile", profile_path(@profile) -> Profile http://apidock.com/rails/ActionView/Helpers/UrlHelper/link_to " link_to(body, url, html_options = {}) " " link to body, url, html_options = {} ""link_to "Profile", profile_path(@profile)" -> Profile OR " link_to "Profile", @profile" -> Profile
"link_to "Profiles", profiles_path" -> Profiles VS "link_to "Profiles", :controller => "profiles"" -> Profiles
How do I know what routes are available in my application? They are all found in route.rb Rake routes in console displays all available routes How do I know what URL helpers Rails will generate for my routes? Creates 7 routes unless you say otherwise. What does the resources method do in routes.rb? What routes does it add and why? Creates 4 gets, 2 post and a delete route Never Cross Some Egret Unless Dead. Never Cross Shad E Unless Desparate. No Church Says Evil Unites Dead. Narrowly Can Some Escape UnDead.
New, Create, Show, Edit, Update, and Delete
How can I configure what routes the resources method generates? Use only and except. Only will create only those routes, except will create all of the routs except those you specify How do I specify my application's root URL? like this: root_to => '/profile' GOES AT THE TOP... TOP IS HIGHEST PRIORITY.... DEFAULT GOES AT THE BOTTOM What common mistakes do people make when setting up routes in Rails? They define all the routes by hand and don’t remove routes they’re not going to use. What are nested resources? Why do I care about them? Are they worth understanding at the outset? resources :magazines do resources :ads end GET /magazines/:magazine_id/ads http://guides.rubyonrails.org/routing.html#paths-and-urls Section 2.7 creating pathways <%= link_to "Ad details", magazine_ad_path(@magazine, @ad) %>
member /photos/1/preview preview_photo_path(photo) Acts on a specific resource so required id (preview specific photo) collection /photos/search search_photos_url Acts on collection of resources(display all photos)
If I memorize only one or two things about routing in Rails, what should that be? Don’t memorize...understand the magic!!