Rails - 获取没有 GET 参数的当前 url
Posted
技术标签:
【中文标题】Rails - 获取没有 GET 参数的当前 url【英文标题】:Rails - Get the current url without the GET parameters 【发布时间】:2011-06-24 06:37:13 【问题描述】:request.url 回复我这个:http://localhost:3000/page?foo=bar.
有没有我可以调用的方法来获取 http://localhost:3000/page ,或者我必须解析字符串以去除获取参数?
【问题讨论】:
【参考方案1】:request.path
如果您不关心主机名,应该返回您要查找的内容。否则你可以试试:
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"),那么您可能会返回错误的路径。
@thekingoftruth 没错,但是会使用最高优先级的路由,所以一定要正确排序。
@tadman 好点。但是,有时两条路由之间没有优先级——一个模型可以从各种 url 访问,具体取决于它们的标记方式。 (例如电影部分、电视部分、喜剧部分等)在这种情况下,url_for 不是一个可行的解决方案。我会将找到的解决方案作为单独的答案发布。
可以使用 URI
模块解析当前 URL,删除查询,然后重新发出作为替代。【参考方案2】:
获取不带任何查询参数的请求URL。
def current_url_without_parameters
request.base_url + request.path
end
【讨论】:
【参考方案3】:我使用以下:
request.original_url.split('?').first
它不会重新生成路径,因此会为您提供最终用户在浏览器中看到的准确网址,减去查询参数。
【讨论】:
不错!更简洁的request.url.split('?').first
也为我工作。
@Franco 我相信request.url
已被弃用,但我不确定。
这更灵活,因为它也可以与request.referrer
一起使用。以上是关于Rails - 获取没有 GET 参数的当前 url的主要内容,如果未能解决你的问题,请参考以下文章
执行 GET 请求时,如何仅获取 view() 函数的第二个参数的响应?