Criando um item passando parâmetro

Quando você tem o primeiro contato com o Rails, você fica logo apaixonado pela facilidade, seja pelo scaffold, seja pelo “covention over configuration” ou pelo migrations.

Mas uma coisa que escapa a nossa atenção é o uso das rotas. Eu tenho aprendido muito estudado o funcionamento das rotas e tenho encontrado muitas soluções algúns problemas chatos de se resolver.

Essa semana mesmo, tive um problema que resolvi criando uma nova rota.

Imagine que você precise criar um novo item qualquer do modelo, mas esse item precisa já ser criado associado a outro item. Resolvi isso fazendo uma nova rota para o controller em questão:

map.new_request 'connection_requests/new/:id', :controller => 'connection_requests', :action => 'new'

Com isso, estou dizendo ao Rails que quando o link “…/new_request/new/1” for chamado, o controller connections_request, ação new, passando o parâmetro 1.

Aí no controller, eu trato o parameter da seguinte forma:

@connection_request.connect_to = params[:id]

O parâmetro id do link é passado via params[:id]. No meu caso, joguei esse valor em um atributo do meu modelo, que usarei no momento de salvar o item. Onde eu farei a associação requerida.

A intensão aqui é apenas mostrar que as rotas devem ser estudadas e levadas em consideração na hora de resolver problemas.