Question about Rails-formatted query params in URL

Hi all,

I am seeing a behavior for which I can’t find documentation. I am
posting a form to a url with query params formatted in the Rails manner:

/controller/action?foo[bar]=3 # Of course, the brackets are properly
encoded

When doing this, the actual form fields get lost, e.g.

params[:foo] # This gives {:bar => 3}

even though the form has other fields for foo.

Any ideas?

Thanks so much,

Brian H.

What is shown in the log file for the parameters for the request? You
should
see data
Processing YourController#method … Parameters: …

Colin

2009/5/29 Brian H. [email protected]

On May 29, 3:04 pm, Brian H. [email protected]
wrote:

params[:foo] # This gives {:bar => 3}

even though the form has other fields for foo.

so params[:foo] is being populated partially from parameters in the
URL, partially from form parameters ? Some of the parameter parsing
stuff changed in 2.3.2 so if you are using 2.3.2 would be interesting
to see if this is a regression.

Fred

Now that I’ve done a bit more testing, I think this is simply a
namespace collision. I think that query parameters and form parameters
share a namespace (the request), and it’s reasonable to have weird or
undefined behavior when there is a collision. It seems like Rails
behavior is to handle the form params first, putting them in the
‘params’ hash, then handle the query params. The Hash class’ behavior
would dictate a ‘last in wins’ behavior, which is consistent with what
I’m seeing.

I found that I don’t really have to encode that parameter in the URL,
which solves my immediate problem.

Thanks!