2013-03-18 50 views
0

我正在使用Carrierwave和S3來允許用戶上傳圖片,圖片網址顯示爲「https://myapp.s3.amazonaws.com/image/53/98ccfeca46.jpg」。是否可以在rails中僅顯示圖像URL的一部分?

我想做兩件事之一。

  1. 我想只顯示 「/image/53/98ccfeca46.jpg」

或2.使用CNAME重新命名的網址不顯示「s3.amazonaws.com」,使圖像URL將爲 https://myapp.com/image/53/98ccfeca46.jpg

我該如何實現這些目標?是否可以在.com之後立即剪切圖像URL? 我正在使用<%= link_to xyz.image%>來顯示URL。

回答

0

您可以創建一個輔助方法來顯示url,並使用string sub來切斷url的第一部分。

在你的助手文件夾

所以,在助手的對應型號,您可能有

def show_url(url) 
    return url.sub("https://myapp.s3.amazonaws.com", "") 
end 

和一個函數,然後在你的助手,你將有<%= link_to show_url(xyz.image) %>

或者確實是類似的東西,但使用正則表達式

def show_url(url) 
    return url.match(/.com(.+)/)[1] 
end 
0

如果您使用carrierwave,則可以撥打.path來檢索路徑的形象。我在本地嘗試了這一點,但它運行良好,但我不確定它是否可以在生產中使用。試試這個:或者

<%= link_to xyz.image.path %> 

,您可以使用CloudFront的服務器你S3文件,它允許你一堆定製的CNAME添加到您的分佈,所以你可以有assets.myapp.com/xyz.jpg

+0

感謝,確實。路徑本地工作。我會檢查它在產品。 – user2159586 2013-03-18 05:07:07

+0

太棒了,讓我知道它是否適用於生產。 – johnkoht 2013-03-18 15:18:21

相關問題