从Ruby中的URL中删除查询字符串可以这样做:
url.split('?')[0]
其中 url 是包含查询字符串的完整网址(例如url = http://www.domain.extension/folder?schnoo=schnok&foo=bar
)。
有没有更快的方法来实现这一点,即不使用 split ,而是使用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
答案 0 :(得分:10)
如果您解析并设置fragment
& query
到nil
而不是重建网址。
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"
答案 1 :(得分: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"]}
答案 2 :(得分:4)
您可以使用Regex获得性能
'http://www.domain.extension/folder?schnoo=schnok&foo=bar'[/[^\?]+/]
#=> "http://www.domain.extension/folder"
答案 3 :(得分:0)
可能不需要拆分网址。当您访问此链接时,您将两个参数传递给后端:
http://www.domain.extension/folder?schnoo=schnok&foo=bar
params[:schnoo]=schnok
params[:foo]=bar
尝试监控您的日志,您将看到它们,然后您可以直接在控制器中使用它们。