Parsing params (one of the params value has ampersand)

Hello,

I am trying to parse a URL of this format

http://example.com/links?deal_id=161&url=http://another_example.com/index.php?route=product/product&product_id=275

I need to get 2 params

deal_id and url

However, in the above example, if I do params[:url], then I get
“http://another_example.com/index.php?route=product/product”

product_id=275 is dropped on the floor as its considered another
params…

CGI:escape for url is not an option since I have no choice in what I am
being passed…

Any ideas?

On Fri, Dec 31, 2010 at 3:52 PM, Jimish Jobanputra
[email protected] wrote:

product_id=275 is dropped on the floor as its considered another
params…

CGI:escape for url is not an option since I have no choice in what I am
being passed…

Any ideas?

  1. Parse the entire query string yourself instead of using the params
    hash

  2. Explicitly retrieve params[‘product_id’] and (re)build the url param
    as you need it in the controller.

  3. Fix the request (as in #2) in a Rack middleware filter.

  4. Tell the “no-choice” source of these malformed unescaped URLs
    to read the damn RFCs :slight_smile:

HTH,

Hassan S. ------------------------ [email protected]
twitter: @hassan