Remote API passing in parameter named 'action', routing lose

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

On 12/29/06, Pat M. [email protected] wrote:

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.

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

Pat

On 29/12/06, Pat M. [email protected] wrote:

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

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

…j

On 12/30/06, Dan M. [email protected] wrote:

Dan M.

Hey Dan, worked great, thanks!

Pat M. 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 M.