Presentação-Herminio-CearaOnRails-08-04-09
-
Upload
hidenowt -
Category
Technology
-
view
657 -
download
1
description
Transcript of Presentação-Herminio-CearaOnRails-08-04-09
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!