O "problema" do parâmetro que contém pontos

Posted by André Ribeiro Camargo Sat, 24 Jul 2010 01:40:00 GMT

Aventura continua, já tenho doze requisições passando no teste de integração do portal. Antes tinha ZERO testes, então, acho que estamos evoluindo rapidamente.

Mas, só passei para avisar aqueles que estão migrando do Rails 1.1.6, para QUALQUER versão superior, sobre o “problema do parâmetro que contém pontos”.

Exemplo:

Aplicação deve processar uma requisição cujo caminho possui pontos, tipo:

/descadastrar/andre@boaideia.inf.br

A rota no Rails 1.1.6 seria:

map.connect "descadastrar/:email", :controller => "controlador", :action => :acao

Para funcionar no Rails3, tem que fazer:

match "descadastrar/:email" => "controlador#acao", :constraints => { :email => /.*/ }

Daí vai funcionar beleza, o “problema” é que apartir da versão 2.0 o Rails utiliza os pontos para escolher o formato da resposta da requisição.

Ai ai, já fazia algumas horas que eu estava procurando entender o motivo pelo qual essa versão 3 me retornava “No route matches”. Coisa triste a ignorância.

PS: NESTE caso, como o parâmetro é um endereço de correio eletrônico, vocês podem até utilizar um regex mais apropriado do que este do exemplo.

Fui!

Posted in , ,

Comments are disabled