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的主要内容,如果未能解决你的问题,请参考以下文章

Ruby on Rails 如何获取当前 URL?

jQuery获取URL的GET参数值

rails 6中没有针对多个路线参数的路线匹配

执行 GET 请求时,如何仅获取 view() 函数的第二个参数的响应?

Cakephp3:如何在询问标记后使用get参数获取当前页面的完整URL

php 中发送get请求,后台无法获取