Forum: Ruby on Rails Question about Rails-formatted query params in URL

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
218ad981316abb835a853bdf6d3039af?d=identicon&s=25 Brian Hartin (bjhartin)
on 2009-05-29 16:04
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 Hartin
5f94b9b346c2aa648a80bc259978e5bc?d=identicon&s=25 Colin Law (Guest)
on 2009-05-30 09:24
(Received via mailing list)
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 Hartin <rails-mailing-list@andreas-s.net>
81b61875e41eaa58887543635d556fca?d=identicon&s=25 Frederick Cheung (Guest)
on 2009-05-30 09:33
(Received via mailing list)
On May 29, 3:04 pm, Brian Hartin <rails-mailing-l...@andreas-s.net>
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
218ad981316abb835a853bdf6d3039af?d=identicon&s=25 Brian Hartin (bjhartin)
on 2009-06-02 21:25
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!
This topic is locked and can not be replied to.