Carlos Brando

Nome do Jogo

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.

routes.rb
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
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.

1
2
3
# As duas linhas a seguir fazem a mesma coisa
match 'products/:id', :to => 'catalog#view'
match 'products/:id' => 'catalog#view'

Comments