Ruby / Rails:使用URI

时间:2018-03-20 02:55:13

标签: ruby-on-rails ruby url uri

目前我使用URI

解析网址时遇到了一些问题

我试图使用此代码:

uri = URI::parse(Model.first.media)
#<URI::HTTPS https://my-bucket.s3.amazonaws.com/model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4>

uri.path
"/model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4"

File.basename(Model.first.media, '.mp4')
"cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4"

但我仍然感到困惑的是,path没有/作为示例model/media/41/cdbb21cc-1c59-4aa3-92ec-917e7237a850.mp4中的第一个字符,并且只获取没有域的路径和示例{{1}中的文件}

我必须使用正则表达式来获得以上输出吗?或URI可以处理这个?

注意:

我已经找到了如何在没有第一个字符的基础上获取网址扩展Ruby regexp: capture the path of url

1 个答案:

答案 0 :(得分:1)

URI类有助于将URL拆分为组件,并为您提供类似

的方法
[:scheme, :userinfo, :host, :port, :path, :query, :fragment]

如果您只是需要摆脱第一个斜杠,那么这很简单,没有正则表达式。

uri.path[1..-1] #gives all string characters except the 0 index.

但你甚至可以逃脱:

Model.first.media.split('.com/').last # don't even need URI parse.

对于问题的最后一部分,您可以这样做:

File.dirname(uri.path) # will return => "/model/media/41"

File.dirname(uri.path)[1..-1] # if you want to remove leading /