Ceará On Rails 2009 - Vou Participar Art Of Community

Roteamento Rails de fora para dentro – parte 1

Segunda parte

Terceira parte

Quarta parte

1 A dupla finalidade do roteamento

Roteamento Rails é um mecanismo de encaminhamento bidirecional – como se você pudesse transformar isso em um papel, e depois cada papel de volta em árvore. Especificamente, que liga as solicitações HTTP recebidas para o código no controlador da sua aplicação, e ajuda a você gerar URLs sem ter que codificar as strings.

1.1 Conectando URLs com o código

Quando sua aplicação Rails recebe uma solicitação HTTP, fala

GET /patients/17

a engine de roteamento dentro do Rails é a parte do código que envia uma solicitação para o local apropriado na sua aplicação. Neste caso, a aplicação provavelmente executaria a ação show dentro do controlador patients, mostrando os detalhes do paciente cujo ID é 17.

1.2 Gerando URLs do código

O roteamento também funciona no caminho reverso. Se sua aplicação contem este código:

@patient = Patient.find(17)
<%= link_to "Patient Record", patient_path(@patient) %>

Então a engine de roteamento é a parte que traduz o link para a URL como http://example.com/patients/17. Usando o roteamento nesta forma, você pode reduzir a fragilidade da sua aplicação se comparada com uma aplicação com URLs codificada dificilmente, e torna o seu código facilmente de ser lido e entendido.

Patient necessita ser declarado como um recurso para que o estilo de tradução por rotas nomeadas possam estar disponíveis.

2 Rápido Tour de Routes.rb

Há dois componentes para roteamento no Rails: a própria engine de roteamento, que é fornecida como parte do Rails, e o arquivo config/routes.rb, que contém as rotas atuais que serão usadas pela sua aplicação. Aprender exatamente o que você pode colocar em routes.rb é o propósito principal deste guia, mas antes vamos obter uma rápida visão geral.

2.1 Processando o arquivo

No arquivo, routes.rb não é nada mais do que um grande bloco enviado para ActionController::Routing::Routes.draw. Junto com este bloco, você pode ter comentários, mas é provável que a maior parte do seu conteúdo será de linhas individuais de código – cada linha iniciando uma rota na sua aplicação. Você encontrará cinco tipos principais de conteúdo neste arquivo:

  • Rotas RESTful
  • Rotas Nomeadas
  • Rotas Aninhadas
  • Rotas Regulares
  • Rotas Padrão

Cada um desses tipos de rotas serão cobertos em mais detalhes neste guia.

O arquivo routes.rb é processado de cima para baixo quando chega uma requisição. A requisição será executada na primeira combinação de rota. Se nenhuma rota combina, então o Rails retorna um status HTTP 404 ao chamador.

2.2 Rotas RESTful

Rotas RESTful tiram a vantagem da orientação built-in do REST do Rails para empacotar muitas das informações de roteamento em uma simples declaração. Uma rota RESTful se parece como esta:

map.resources :books

2.3 Rotas nomeadas

Rotas nomeadas da a você links legíveis no seu código, bem como manipulação nas solicitações recebidas. Veja aqui uma típica rota nomeada:

map.login '/login', :controller => 'sessions', :action => 'new'

2.4 Rotas aninhadas

Rotas aninhadas permite você declarar que um recurso está contido dentro de outro recurso. Você verá mais tarde como pode traduzir para as URLs e caminhos no seu código. Por exemplo, se sua aplicação incluir parts, cada uma das quais pertence a um assembly, você pode declarar esta rota aninhada como:

map.resources :assemblies do |assemblies| assemblies.resources :parts end

2.5 Rotas regulares

Em muitas aplicações, você verá roteamentos não RESTful, que conecta explicitamente cada parte da URL a uma ação em particular. Por exemplo,

map.connect 'parts/:number', :controller => 'inventory', :action => 'show'

2.6 Rotas padrão

As rotas padrão são a forma segura de capturar requisições sem outras formas de rotas. Muitas aplicações Rails contém este par de rotas como padrão:

map.connect ':controller/:action/:id' map.connect ':controller/:action/:id.:format'

Estas rotas padrão são geradas automaticamente quando você cria uma nova aplicação Rails. Se você está usando roteamento RESTful para tudo na sua aplicação, você provavelmente precisará removê-la. Mas verifique se você não está usando rotas padrões antes de removê-las.

Segunda parte

Terceira parte

Quarta parte