5

从 Ruby 中的 URL 中删除查询字符串可以这样完成:

url.split('?')[0]

其中url是完整的 URL,包括查询字符串(例如url = http://www.domain.extension/folder?schnoo=schnok&foo=bar)。

有没有更快的方法来做到这一点,即不使用split,而是使用 Rails?

编辑:目标是从重定向http://www.domain.extension/folder?schnoo=schnok&foo=barhttp://www.domain.extension/folder.

编辑:我用过:

url = 'http://www.domain.extension/folder?schnoo=schnok&foo=bar'
parsed_url = URI.parse(url)
new_url = parsed_url.scheme+"://"+parsed_url.host+parsed_url.path
4

4 回答 4

16

fragment如果您解析并设置& querytonil而不是重建 URL,则更容易阅读且更难搞砸。

parsed = URI::parse("http://www.domain.extension/folder?schnoo=schnok&foo=bar#frag")
parsed.fragment = parsed.query = nil
parsed.to_s

# => "http://www.domain.extension/folder"
于 2015-06-24T07:19:45.003 回答
7
 url = 'http://www.domain.extension/folder?schnoo=schnok&foo=bar'
 u = URI.parse(url)
 p = CGI.parse(u.query)
 # p is now {"schnoo"=>["schnok"], "foo"=>["bar"]}

看一下:如何从 ruby​​ on rails 中传递的 url 获取查询字符串

于 2012-05-02T09:17:55.433 回答
6

您可以使用 Regex 获得性能

'http://www.domain.extension/folder?schnoo=schnok&foo=bar'[/[^\?]+/]

#=> "http://www.domain.extension/folder"
于 2013-08-14T16:20:08.927 回答
0

可能不需要拆分网址。当您访问此链接时,您将两个参数传递给后端:

http://www.domain.extension/folder?schnoo=schnok&foo=bar params[:schnoo]=schnok params[:foo]=bar

尝试监控你的日志,你会看到它们,然后你可以直接在控制器中使用它们。

于 2012-05-02T09:11:31.337 回答