Presentação-Herminio-CearaOnRails-08-04-09

Post on 28-May-2015

656 views 1 download

Tags:

description

Apresentação sobre rotas no rails na primeira edição do Ceara On Rails de 2009 que ocorreu na data de 08//04/2009

transcript

URL não mapeada?

RESTful

REST?

Verbos HTTP Ações CRUD

Verbos HTTP Ações CRUD

Verbos HTTP Ações CRUD

Verbos HTTP Ações CRUD

Rails on REST

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photosend

URLs e Caminhos

URLs e Caminhos

Action_controller_url

http://www.exemplo.com.br/photos

URLs e Caminhos

Action_controller_path

http://www.exemplo.com.b /photos

Customizando Recursos

:controller

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos, :controller => “images”end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos, :controller => “images”end

/photos

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos, :controller => “images”end

:as

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos, :as => “images”end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos, :as => “images”end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos, :as => “images”end

/photos

/photos

:controller:as

/photos

/photos

:controller:as

/photos

/photos

:controller:as

/photos

:path_names

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos, :path_names => { :new => ‘novo’, :edit => ‘editar’ }

end

# config/enviroment.rbRails::Initializer.run do |config|

config.action_controller.resources_path_names{ :new => ‘novo’, :edit => ‘editar’ }

end

http://www.example.com.brRaiz do Site ou root(não muda)‏

http://www.example.com.br / photos / novocontroller action

Raiz do Site ou root(não muda)‏

http://www.example.com.brcontroller action

/ photos / 1 / editar

id

Raiz do Site ou root(não muda)‏

aninhada

class Magazine < ActiveRecord::Base# has_many é um relacionamentohas_many :ads

end

class Ad < ActiveRecord::Base# belongs_to é um relacionamentobelongs_to :magazine

end

model

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :magazines do |magazine|magazine.resources :ads

endend

model + routes

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :magazines, :has_many => :adsend

a url ficaria como?

Assim?

http://www.example.com.brcontroller action

/ photos?id=1&editar

id

Raiz do Site ou root(não muda)‏

http://www.example.com.brRaiz do Site ou root(não muda)‏

controller action

/ photos / 1 / editar

id

E quais as vantagens?controller action

/ photos / 1 / editar

id

E uma rota aninhada com várias outras?

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos do |photo|photo.resource :photographerphoto.resources :publicationsphoto.resources :versions

endend

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos do |photo|photo.resource :photographerphoto.resources :publicationsphoto.resources :versions

endend

Lindo! Não?

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos do |photo|photo.resource :photographerphoto.resources :publicationsphoto.resources :versions

endend

Não

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :photos, :has_one => :photographer,:has_many => [ :publications, :versions ]

end

Lindo!

Uma rota aninhada dentro de outra rota aninhada?

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :publishers do |publisher|publisher.resources :magazines do |magazine|

magazine.resources :photosend

endend

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :publishers do |publisher|publisher.resources :magazines do |magazine|

magazine.resources :photosend

endend

_path: /publishers/1/magazines/2/photos/3

:shallow

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.resources :publishers, :shallow => true do |publisher|publisher.resources :magazines do |magazine|

magazine.resources :photosend

endend

_path: /publishers/1_path: /publishers/1/magazines_path: /magazines/2_path: /magazines/2/photos_path: /photos/3

regular

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.connect ‘:controller/:action/:id’map.connect ‘:controller/:action/:id.:format’

end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.connect ‘:controller/:action/:id’map.connect ‘:controller/:action/:id.:format’

end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.connect ‘:controller/texto_estatico/:id’end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.connect ‘photo/:id’, :controller => ‘photos’, :action => ‘show’end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.connect ‘photo/:id’, :controller => ‘photos’, :action => ‘show’,:defaults => { :format => ‘jpg’ }

end

nomeada

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.logout ‘/logout’, :controller => ‘sessions’, :action => ‘destroy’end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.login ‘/login’, :controller => ‘sessions’, :action => ‘new’,:conditions => { :method => :post }

end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.with_options :controller => ‘photos’ do |photo|photo.delete ‘:id/delete’, :action => ‘delete’photo.edit ‘:id/edit’, :action => ‘edit’

endend

padrão

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.root :controller => ‘pages’, :action => ‘main’end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.root :controller => ‘pages’, :action => ‘main’end

# config/routes.rb ActionController::Routing::Routes.draw do |map|

map.index ‘index’, :controller => ‘pages’, :action => ‘main’map.root :index

end

end

obrigado!