2013-05-13 93 views
0

我有包含圖像標籤的HTML文檔。我需要挑出每個圖像標籤的源屬性,並指定一個完整的路徑,而不是已經存在的相對路徑。那是追加絕對路徑。在Ruby on Rails中指定圖像源的完整路徑

當前版本:

<img src = '/assets/rails.png' /> 

改造後:

<img src = 'http://localhost:3000/assets/rails.png' /> 

什麼是RoR中做到這一點最乾淨,最有效的方法是什麼?

加成

我將使用轉換後的HTML作爲一個字符串,並把它傳遞給IMgKit轉化成寶石的圖像。

+0

請檢查http://stackoverflow.com/questions/6500025/how-doi-i-一個絕對的網址爲資產in-rails-3-1 – Galen 2013-05-13 15:11:49

+0

目前尚不清楚你想要什麼。 HTML文件是HTML模板還是真正的HTML文件,您需要解析和轉換'src'參數? – 2013-05-13 15:30:39

回答

3

很難搞清楚,如果你的意思是你有HTML模板,如HAML或ERB,或真正的HTML文件。如果你試圖操縱HTML文件,你應該使用引入nokogiri來解析和改變src參數:

require 'nokogiri' 
require 'uri' 

html = '<html><body><img src="/path/to/image1.jpg"><img src="/path/to/image2.jpg"></body></html>' 
doc = Nokogiri.HTML(html) 

doc.search('img[src]').each do |img| 
    img['src'] = URI.join('http://localhost:3000', img['src']).to_s 
end 

puts doc.to_html 

,輸出:

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 
<html><body> 
<img src="http://localhost:3000/path/to/image1.jpg"><img src="http://localhost:3000/path/to/image2.jpg"> 
</body></html> 

你可以做的src參數各種方式操縱,但是使用URI的好處是,它知道URL需要遵循的各種曲折和變化。使用gsub重寫參數或文本操作需要您注意所有這些,並且意外的編碼問題可能會蔓延。

0

您可以創建一個helper方法,這樣你就可以在任何地方使用它

def full_image_path(image) 
    request.protocol + request.host_with_port + image.url 
end