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.
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
[ATUALIZAÇÃO 21/12/2009 3:00]
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é!