Rails 4:redirect_to:返回并更改/删除参数

Pet*_*ter 7 redirect ruby-on-rails query-string ruby-on-rails-4

我认为这应该很容易,但我不能为我的生活让它工作,或在网上找到解释它的任何东西.表单提交后,我想重定向回referer/referrer并更改或删除一个或多个查询参数.

例如,表格是

/tasks/6?foo=1&bar=1
Run Code Online (Sandbox Code Playgroud)

我想事后去

/tasks/6?foo=0&bar=1
Run Code Online (Sandbox Code Playgroud)

我尝试了各种各样的组合

redirect_to :back, foo: 0
Run Code Online (Sandbox Code Playgroud)

要么

redirect_to :back, params: {foo: 0, bar: 1}
Run Code Online (Sandbox Code Playgroud)

等等,但没有任何东西可以将我重定向到原始页面以外的任何内容.我本来希望避免不得不用字符串自行修改,但它可能会出现这种情况.

如果还有一种方法可以完全摆脱参数,例如重定向到:它也会很棒.

/tasks/6?bar=1
Run Code Online (Sandbox Code Playgroud)

谢谢!

Sim*_*tti 5

:back不接受其他参数。为了完成您想做的事情,您需要使用以下方法获取引荐来源网址的值

request.referer
Run Code Online (Sandbox Code Playgroud)

要么

request.env['HTTP_REFERER']
Run Code Online (Sandbox Code Playgroud)

URI库解析它,提取查询并用分解Rack::Utils.parse_query。至此,您已经有了params的哈希值。

您可以更新哈希,并构造重定向的URL。