将param值传递给redirect_to作为rails中的查询字符串

时间:2009-04-03 18:52:49

标签: ruby-on-rails ruby redirect query-string

这应该很简单,但我似乎找不到简单的答案。

如何将当前请求中的参数值传递给redirect_to调用?我有一些表单值,我想传递给GET重定向的查询字符串

我想做点什么:

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

并发送至:

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

谢谢!

另外 - 如何处理redirect_to:back?

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

2 个答案:

答案 0 :(得分:37)

redirect_to的“记录”形式仅将第二个参数用于响应状态。你必须使用另一种形式的redirect_to,比如'String'形式。 e.g:

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

这将适用于您提到的嵌套params[:foo]参数。或者,正如Drew在下面评论的那样,您可以使用polymorphic_url(或_path):

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

答案 1 :(得分:4)

添加乔丹的答案:

如果您不知道对象@thing的类型,可以使用通用polymorphic_url方法。无论如何,当您将对象传递给redirect_to时,这是在内部调用的方法。