我在Ruby程序中有兩個URI。一個肯定是一個絕對的URI,另一個可能是絕對的或相對的。我想在第一個上下文中使用絕對URI來表示第二個,所以如果第一個是http://pupeno.com/blog而第二個是/ about,那麼結果應該是http://pupeno.com/about。任何想法如何做到這一點?在Ruby的另一個環境中評估潛在的相對URI
5
A
回答
11
兩個Ruby的內置URI和Addressable寶石,使這短暫的工作。我更喜歡Addressable,因爲它更加全面,但是內置了URI。
require 'uri'
URI.join('http://pupeno.com/blog', '/about') # => #<URI::HTTP:0x00000101098538 URL:http://pupeno.com/about>
或
require 'addressable/uri'
uri = Addressable::URI.parse('http://pupeno.com/blog')
uri.join('/about') # => #<Addressable::URI:0x806704a0 URI:http://pupeno.com/about>
它的使用提供的join
方法是一個好主意,因爲他們做一些健全檢查,以確保返回的地址是明智的。如果您有相對URL,直接分配給路徑可能會破壞事情,只需替換舊路徑即可。 join
將考慮到這一點,並將取代或合併,以適合的爲準。
1
這將做到這一點:
require 'uri'
url=URI.parse('http://pupeno.com/blog')
=> #<URI::HTTP:0x00000100e35368 URL:http://pupeno.com/blog>
ruby-1.9.2-p0 > url.path="/about"
=> "/about"
ruby-1.9.2-p0 > url
=> #<URI::HTTP:0x00000100e35368 URL:http://pupeno.com/about>
相關問題
- 1. 評估在Ruby中
- 2. 評估Rcpp環境中的表達式
- 3. 在另一個Ruby腳本的上下文中評估Ruby代碼
- 4. 截取相對於另一個的URI
- 5. 當在另一個環境
- 6. 從T-SQL返回的INT在發佈環境中未評估
- 7. getElementById在一個環境中工作,但不在另一個環境中
- 8. 如何使用省略號傳遞參數並在R的另一個環境中評估
- 9. 評估在另一個單元格中定義的公式
- 10. 在另一個模塊的上下文中評估模塊
- 11. 如何評估環境變量?
- 12. 什麼是'console`標籤評估環境
- 13. 如何創建MVEL評估環境?
- 14. 評估ksmooth在一個點?
- 15. 評估和演示在另一類
- 16. 評估while循環在某一點?
- 17. Java Runtime.exec運行的命令中的環境變量評估()
- 18. 如何評估在環境中設置的列表中的變量名稱?
- 19. 在C++中將時間從一個環境轉換爲另一個環境
- 20. 評估使用潛在的符號定義的功能
- 21. 製作一個在if語句中評估爲false的對象
- 22. Ruby:減速評估
- 23. Ruby實例評估
- 24. R - 評估環境中的嵌套函數
- 25. 提供評估另一個查詢
- 26. 評估基於值從另一個表
- 27. 在R:如何獲得在規定的環境評估操作的結果
- 28. '評估'圖像[x]在一個循環中
- 29. scanf在while循環中不評估第一個信息塊
- 30. 在javascript中評估一個實例化
該方法的問題是第二個字符串也可能是絕對URI。 – Pablo 2011-04-20 05:55:16
哎呀,我從描述中不理解這一點 – eggie5 2011-04-20 06:12:35