Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将重定向_中的GET参数替换为request.referer_Ruby On Rails - Fatal编程技术网

Ruby on rails 将重定向_中的GET参数替换为request.referer

Ruby on rails 将重定向_中的GET参数替换为request.referer,ruby-on-rails,Ruby On Rails,我正在尝试替换获取参数: redirect_to request.referer My request.referer已包含一个参数: http://www.foo.com/bar?par=10 当我尝试时: redirect_to request.referer, :par => 5 它不起作用。它重定向到referer,但没有改变:标准杆从10杆变为5杆。 当我重定向到url_路径时,例如 redirect_to root_path, :par => 5 此操作正常,重定

我正在尝试替换获取参数:

redirect_to request.referer
My request.referer已包含一个参数:

http://www.foo.com/bar?par=10
当我尝试时:

redirect_to request.referer, :par => 5
它不起作用。它重定向到referer,但没有改变:标准杆从10杆变为5杆。 当我重定向到url_路径时,例如

redirect_to root_path, :par => 5
此操作正常,重定向到:

http://www.foo.com/?par=5
所以我的问题是如何替换request.referer URI中的参数。另外一个问题是我应该使用request.referer还是:back


谢谢

问题是重定向到最终只需要一个字符串,即url。如果你要做这样的事情

redirect_to edit_foo_path(@foo, :bar => "qux")
然后使用路径帮助器生成该字符串。例如,
edit\u foo\u path(:bar=>“qux”)
是帮助程序,它将转换为
“/foo/123/edit?bar=qux”
,这只是一个“哑”字符串。如果您正在使用帮助器,您可以切换参数,但是使用字符串它已经完成了,如果您知道我的意思的话

request.referer
也是一个字符串,所以您需要做的是将其分解为组成部分,根据需要修改这些部分,然后重新将其组装成字符串。讨论的部分是协议、主机、路径和参数。在这种情况下,您不需要更改协议、主机或路径,以便保持它们不变。参数在转换为哈希时最容易操作。Rails具有各种url处理功能,您可以在这里使用这些功能,因此可能有几种不同的方法来实现这一点。我会像下面这样做,这可能不是最有效的

url = URL(request.referer)
#you could get this via a regex but i'm doing it "formally" with the Url object
host_and_path = "#{url.scheme}://#{url.host}#{url.path}"
params = CGI.parse(url.query)
#now you've got params as a hash you can do what you want to it.
params["par"] = 5
new_url = "#{host_and_path}?#{params.to_param}"
redirect_to new_url

就像我说的那样,可能有更有效的方法(就代码行而言,在速度方面没有问题)来实现这一点,但我想看看逐步的方法是有用的。

可能是一个双重问题。请参阅