Muitas novidades estão sendo preparadas para a próxima versão do Rails. Uma que já estamos observando a alguns dias é a nova DSL para a configuração de rotas.
O Rails 3 ainda está em desenvolvimento, isto significa que o código da DSL pode sofrer alterações até o lançamento oficial. De qualquer forma você pode ir matando a curiosidade analisando o novo arquivo config/routes.rb que está sendo gerado pelo Rails 3.0.pre neste momento. Eu tomei a liberdade de traduzir os comentários para facilitar o entendimento.
routes.rb
ActionController::Routing::Routes.draw do |map| # A prioridade é baseada na ordem da criação: # criado primeiro -> maior prioridade. # Exemplo de uma rota comum: match 'products/:id', :to => 'catalog#view' # Tenha em mente que você pode atribuir outros valores # além de :controller e :action # Exemplo de uma rota nomeada: match 'products/:id/purchase', :to => 'catalog#purchase', :as => :purchase # Esta rota pode ser invocada utilizando # purchase_url(:id => product.id) # Exemplo utilizando resources (mapeia verbos HTTP # para ações do controller automaticamente) resources :products # Exemplo utilizando resources com opções: resources :products do member do get :short post :toggle end collection do get :sold end end # Exemplo utilizando resource com sub-resources: resources :products do resources :comments, :sales resource :seller end # Exemplo mais complexo de uso de resources com # sub-resources: resources :products do resources :comments resources :sales do get :recent, :on => :collection end end # Exeplo utilizando resource com um namespace: namespace :admin do # Direciona /admin/products/* para # Admin::ProductsController # (app/controllers/admin/products_controller.rb) resources :products end # Você pode definir a home do seu site utilizando # "root". # Lembre-se de apagar o arquivo public/index.html. root :to => "welcome" # Você pode listar todas as rotas disponíveis com # "rake routes" # Deixe a rota padrão com a prioridade mais baixa # possível. # Nota: A rota padrão torna todas as actions em # qualquer controller acessíveis via solicitações GET. # Você deve considerar a remoção ou comentar esta # linha se estiver usando rotas nomeadas e recursos. match ':controller(/:action(/:id(.:format)))' end
A DSL sofreu uma leve alteração que simplifica ainda mais a especificação de rotas.
# As duas linhas a seguir fazem a mesma coisa
match 'products/:id', :to => 'catalog#view'
match 'products/:id' => 'catalog#view'
Olá Carlos,
Gostei da nova sintaxe. Me tira uma dúvida… Ainda vamos ter as opções
:onlye:exceptno resources?Abraços
Muito bom, ficou bem mais legível!
olá carlos,
agora sim, a coisa ficou boa, a parte de rotas do rails, nunca me agradou muito.
abraço
Gabriel Sobrinho,
Eu ainda não testei, mas acredito que as opções :only e :except devem continuar funcionando normalmente.
Filé!