Rails - Get the current url without the GET parameters
我这request.url归来:http://localhost:3000元/页?foo bar =。P></
is there to get a method可以呼叫:http://localhost / 3000页,或给你have to get to the parse串带参数?P></
如果您不关心主机名,那么request.path应该返回您要查找的内容。否则,您可以尝试:
1
| url_for(:only_path => false, :overwrite_params=>nil) |
- 我也遇到了递归参数问题,/controller/action?param=1?param=2?param=3,但是request.path对我来说非常有用。
- 上述方法的问题在于,如果同一类型的资源有多个路径(例如,对于某些内容标记为"/news/post name"和其他"/blog name/post name"的出版物),则可能会返回错误的路径。
- @国王之路是真的,但最高优先级的路线将被使用,所以一定要正确地订购它们。
- @泰德曼说得对。然而,有时两个路由之间没有优先级——一个模型可以从不同的URL访问,这取决于它们是如何标记的。(例如电影节、电视节、喜剧节等)在这种情况下,url-for不是一个可行的解决方案。我将把我找到的解决方案作为一个单独的答案发布。
- 可以使用URI模块解析当前的URL,剥离查询,并将其作为备选方案重新发出。
我使用以下方法:
1
| request.original_url.split('?').first |
它不会重新生成路径,因此会精确地给出最终用户在浏览器中看到的URL,减去查询参数。
- 好极了!同时,特瑟·埃多克斯(Terser EDOCX1)(2)也为我工作。
- @弗朗哥,我相信江户十一〔三〕是不赞成的,但我不确定。
- 这是更灵活的,因为它也可以与request.referrer一起工作。
获取不带任何查询参数的请求URL。
1 2 3
| def current_url_without_parameters
request.base_url + request.path
end |