Remote API passing in parameter named 'action', routing loses it

I'm working with a remote API that calls a URL in my app, passing in a parameter named action. So the request would look like:

http://localhost/my_controller?action=foo

Routing correctly interprets the controller action as index. However, it sets params[:action] to index as well. I know that's how it's supposed to work...but it means I lose the action parameter passed in. What's the easiest way to get the action parameter? I can't change the name, at least on the API end.

Pat

And actually, it uses POST, so I can't use URL rewriting.

Pat

I had the same issue. Ended up playing with request.request_uri to extract the value.

...j

Pat Maddox wrote:

And actually, it uses POST, so I can't use URL rewriting.

If it is a POST, in your controller: CGIMethods.parse_query_parameters(request.raw_post)

That should give you a hash of the post parameters before the routes overwrite action, so you should be able to retrieve action with: CGIMethods.parse_query_parameters(request.raw_post)["action"]

Dan Manges

Hey Dan, worked great, thanks!