2012-03-28 87 views
0

这是Sinatra应用程序的一个片段,用户将提交URL。我必须确保http://预设为url,以便在我的应用程序外部路由。我如何说site一次并访问它的属性? (3号线)状态对象一次,并检索多个属性

p.params= "www.ruby-lang.org/en/" 
    site = URI(p.params[:url]) 
    site = "http://" + site.host + site.path + site.query 

回答

1

如果您需要确保网址开头是http://,为什么不使用正则表达式?只有

p.params = "www.ruby-lang.org/en/" 
site = p.params.gsub(/^(­?!http:\/\­/)/, "http­://") 
# site = http://www.ruby-lang.org/en/ 

^(­?!http:\/\­/)匹配时字符串的开头不是其次通过http://

+0

不是引发用户的错误不包括的“http://”,我想侧步的通过从字符串中提取主机,路径和查询(如果存在)并自动预先配置,完全发布。 – Dru 2012-03-28 03:01:13

+0

此方法不会引发错误。它只是在需要的时候预先设置'http://'。否则,它会将“site”设置为原始URL。 – Kyle 2012-03-28 03:15:31