Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Is there a Ruby library/gem that will generate a URL based on a set of parameters?

Rails' URL generation mechanism (most of which routes through polymorphic_url at some point) allows for the passing of a hash that gets serialized into a query string at least for GET requests. What's the best way to get that sort of functionality, but on top of any base path?

For instance, I'd like to have something like the following:

generate_url('http://www.google.com/', :q => 'hello world')   # => 'http://www.google.com/?q=hello+world' 

I could certainly write my own that strictly suits my application's requirements, but if there existed some canonical library to take care of it, I'd rather use that :).

like image 592
Steven Avatar asked May 27 '11 12:05

Steven


1 Answers

Yes, in Ruby's standard library you'll find a whole module of classes for working with URI's. There's one for HTTP. You can call #build with some arguments, much like you showed.

http://www.ruby-doc.org/stdlib/libdoc/uri/rdoc/classes/URI/HTTP.html#M009497

For the query string itself, just use Rails' Hash addition #to_query. i.e.

uri = URI::HTTP.build(:host => "www.google.com", :query => { :q => "test" }.to_query) 
like image 88
d11wtq Avatar answered Sep 21 '22 04:09

d11wtq