Rails 3: Uma nova DSL para a configuração de rotas
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.drawdo|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:productsdomemberdoget:shortpost:toggleendcollectiondoget:soldendend# Exemplo utilizando resource com sub-resources:resources:productsdoresources:comments,:salesresource:sellerend# Exemplo mais complexo de uso de resources com # sub-resources:resources:productsdoresources:commentsresources:salesdoget:recent,:on=>:collectionendend# Exeplo utilizando resource com um namespace:namespace:admindo# Direciona /admin/products/* para # Admin::ProductsController# (app/controllers/admin/products_controller.rb)resources:productsend# 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.
123
# As duas linhas a seguir fazem a mesma coisamatch'products/:id',:to=>'catalog#view'match'products/:id'=>'catalog#view'