Justin Justin - 7 months ago 92
Ruby Question

Passing param values to redirect_to as querystring in rails

This should be simple, but I can't seem to find an easy answer.

How can I pass param values from the current request into a redirect_to call? I have some form values I'd like to pass into the query string of a GET redirect

I'd like to do something like:

redirect_to @thing, :foo => params[:foo]


and get sent to:

http://things/4?[foo][key1]=val1&[foo][key2]=val2


Thanks!

Also - how could this be handled for a redirect_to :back?

redirect_to :back, :foo => params[:foo]

Answer

The 'Record' form of redirect_to uses the second argument only for the response status. You'll have to use another form of redirect_to, like the 'String' form. e.g.:

redirect_to thing_path(@thing, :foo => params[:foo])

which will work for nested params[:foo] params like you mentioned. Or, as Drew commented below, you can use polymorphic_url (or _path):

redirect_to polymorphic_path(@thing, :foo => params[:foo])