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=bar到http://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
更易于阅读和难以搞砸了,如果你分析和设置fragment及query到nil的,而不是重建的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获取查询字符串
您可以使用Regex获得性能
'http://www.domain.extension/folder?schnoo=schnok&foo=bar'[/[^\?]+/]
#=> "http://www.domain.extension/folder"
Run Code Online (Sandbox Code Playgroud)