使用Ruby删除URL的一部分

TTT*_*TTT 3 ruby url ruby-on-rails query-string

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

url.split('?')[0]
Run Code Online (Sandbox Code Playgroud)

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

有没有更快的方法来做到这一点,即不使用拆分,而是使用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
Run Code Online (Sandbox Code Playgroud)

TTT*_*TTT 11

更易于阅读和难以搞砸了,如果你分析和设置fragmentquerynil的,而不是重建的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"
Run Code Online (Sandbox Code Playgroud)


小智 6

 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"]}
Run Code Online (Sandbox Code Playgroud)

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


zet*_*ova 5

您可以使用Regex获得性能

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

#=> "http://www.domain.extension/folder"
Run Code Online (Sandbox Code Playgroud)