usar params con slashes en sinatra



  Solución Elegida Por El Autor

Publicado 11 mayo 2015 - 20:49

Has intentado con los parametros splat? La sintaxis es parecida a la siguiente:

get '/add/*' do
 protocol = params[:splat].first
 address = params[:splat][1..-1].join('/')

 url = protocol + "//" + address
end

   AUTOR PREGUNTA

Publicado 11 mayo 2015 - 15:08

Estoy jugando un poco con Sinatra y revisando los tutoriales aca pero me he encontrado con un pequeño problema y es cuando uso params con slashes confundo al motor de enrutamiento. Les dejo una porcion del codigo:

get 'add/:url' do
  #....
end

Existe una forma de manejar este tipo de problemas sin tener que encodearlo?

 



¿Tienes la misma pregunta? Yo también

 

Publicado 11 mayo 2015 - 20:49

Has intentado con los parametros splat? La sintaxis es parecida a la siguiente:

get '/add/*' do
 protocol = params[:splat].first
 address = params[:splat][1..-1].join('/')

 url = protocol + "//" + address
end

   AUTOR PREGUNTA

Publicado 11 mayo 2015 - 20:50

Gracias! Funciona perfecto, incluso consegui hacerlo de una manera mucha mas corta y con expresiones regulares:

get %r{/add/(.+)} do
 url = params[:captures]
end

 

Publicado 11 mayo 2015 - 20:50

Excelente, que bueno que te sirvio


 

Publicado 11 mayo 2015 - 20:52

En la linea donde capturas la URL puedes tambien hacer lo siguiente:

url = request.fullpath[5..-1]