2014-02-19 15 views
5

在我的應用程序中,用戶上傳了一張圖片,然後我把它放在S3上。該圖像被後來作爲一個div的背景下,使用下面的風格Ruby/Rails - 用於css的越獄uri

div#id { background: url('<%= creative.url %>') no-repeat;} 

廣告網址類似於:

http://myhost.s3-website-us-east-1.amazonaws.com/27/display/608-(rec'd_021014)_user_image.jpg?1392767029

如上所述,問題是creative.url可以包含特殊字符(引號,parens等),並根據http://www.w3.org/TR/CSS2/syndata.html#value-def-uri,它需要被轉義。

我希望有一些方便的ruby/rails函數可以爲我處理這個問題。

如果沒有,那麼我可能需要做一些正則表達式替換 - 看起來像什麼?

更新:

鄉親使用URI編碼功能建議 - 我沒有嘗試,但URL字符串在ERB模板直接使用,因此這將編碼這是行不通的,在整個事情CSS的URL功能 - 即,我會像(上面):

div#id {background: url('http%3A%2F%2Fmyhost.s3-website-us-east-1.amazonaws.com%2F27%2Fdisplay%2F608-(rec%27d_021014)_user_image.jpg%3F1392767029') no-repeat;}

回答

1

你可以試試:

URI(url)URI.encode(url)URI.decode(url)URI.parse(url)

取決於案件的

您可能需要之前

0

推薦方式來加載require 'uri'是使用url_encode從ERB::Util

在Rails ,有一個aliasu url_encode。

div#id { background: url('<%=u creative.url %>') no-repeat;} 
1

您可以使用轉儲。

div#id { background: url('<%= creative.url.dump %>') no-repeat;}