首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Rails 4-解析URL

Rails 4-解析URL
EN

Stack Overflow用户
提问于 2014-05-06 23:03:19
回答 2查看 1.6K关注 0票数 1

我正在我的Rails应用程序中解析一个URL。我想让域example.com去掉任何协议,子域,目录等等。

我的方法:

代码语言:javascript
复制
def clean_host(url)
  uri = URI.parse(url)
  return uri
end

我真正得到的example.com/是:

代码语言:javascript
复制
scheme: 
user:
password:
host:
port:
path: example.com/
query:
opaque:
registry:
fragment:
parser:

我最终想要的是将域example.com从任何协议、子域、目录等中删除。

我研究过领域线,但它不会与我的项目捆绑在一起。有什么方法可以用Ruby的URI.parse来实现吗?还是我要研究其他的途径?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2014-05-06 23:31:24

问题是example.com/不是一个完整的URL。URI正确地假定它是一条路径。如果是我,你会有很多这样的碎片,我会用暴力强迫它。

代码语言:javascript
复制
 > "example.com/".sub(%r{^.*?://}, '').sub(%r{/.*$}, '')
 => "example.com"

> "http://subdomain.example.com/path/here".sub(%r{^.*?://}, '').sub(%r{/.*$}, '')
 => "subdomain.example.com"

剥离子域是另一个蜡球,因为您需要通过TLD来确定什么是合适的,这样您就不会最后说"com.uk“了。

票数 1
EN

Stack Overflow用户

发布于 2014-05-06 23:55:05

假设您在控制器中执行此操作,您就应该能够执行request.domain。

您还可以使用request.path和request.subdomain。

例如:http://www.domain.com/users/123

代码语言:javascript
复制
request.subdomain => 'www'
request.domain => 'domain.com'
request.path => '/users/123'
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23505968

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档