2011-04-19 9 views

Respuesta

11

de Rubí Tanto incorporado URI y la Addressable gema, hacen el trabajo por debajo de este. Prefiero direccionable porque tiene más funciones pero el URI está incorporado.

require 'uri' 

URI.join('http://pupeno.com/blog', '/about') # => #<URI::HTTP:0x00000101098538 URL:http://pupeno.com/about> 

o

require 'addressable/uri' 

uri = Addressable::URI.parse('http://pupeno.com/blog') 
uri.join('/about') # => #<Addressable::URI:0x806704a0 URI:http://pupeno.com/about> 

Es una buena idea utilizar los métodos suministrados join, porque lo hacen un poco de cordura comprobación para asegurarse de que la dirección de retorno es cuerdo. Asignar directamente a la ruta puede romper cosas si tiene una URL relativa y simplemente reemplaza la ruta anterior. join tendrá esto en cuenta y reemplazará o fusionará, lo que sea apropiado.

1

Esto lo hará:

require 'uri' 
url=URI.parse('http://pupeno.com/blog') 
=> #<URI::HTTP:0x00000100e35368 URL:http://pupeno.com/blog> 
ruby-1.9.2-p0 > url.path="/about" 
=> "/about" 
ruby-1.9.2-p0 > url 
=> #<URI::HTTP:0x00000100e35368 URL:http://pupeno.com/about> 
+0

El problema con este enfoque es que la segunda cadena también podría ser un URI absoluto. – Pablo

+0

oops, no entendí esto de la descripción – eggie5

Cuestiones relacionadas