2016-11-30 23 views
1

由於我在Hootsuite上檢索Amazon S3上的圖像存儲時遇到問題,因此我想通過og:image標記添加「後備」圖像。 (讓我們忽視了S3的問題在這裏,這是另一天)。 的圖像在我的Heroku和那些沒有圖像指定,否則文章存儲在本地,我成功地使用它,如下所示:Rails:使用資產管道散列URL創建og:圖像

<%= image_tag "fallback/my-fallback-image.jpg" %> 

出於某種原因儘管如此,Hootsuite的算法仍然非常愚蠢,因此我想添加og:image

的應用佈局檢索標籤像這樣:

<%= yield :og_image %> 

我已經附加了輔助像這樣:

def og_image(url) 
    content_for(:og_image, tag(:meta, :property => "og:image", :content => url)) if url 
end 

在視圖中,我添加圖像像這樣:

<%= provide(:og_image, og_image(image_url("/fallback/my-fallback-image.jpg"))) %> 

在製作中,雖然image_tag(如上所示)工作正常,並且包含散列,但是og:image標籤結束是這樣的:

<meta property="og:image" content="http://www.example.com/images/%2Ffallback%2Fmy-fallback-image.jpg" /> 

因此,它不僅弄亂了斜槓,它也忘記了散列。

我受到Heroku的限制,想要堅持使用資產管道。我應該怎麼做?

謝謝!

回答

0

嘗試不帶斜線的路徑。當你添加它時,rails會假定你想要一個絕對路徑。

image_url("fallback/my-fallback-image.jpg") 
+0

奇怪的是,這對我有用。無論如何,很高興你能找到解決方案。 – tegon

0

好吧,我想通了。 url_to_image提供一個適當的完整URL與哈希:

provide(:og_image, og_image(url_to_image("fallback/my-fallback-image.jpg"))) 

我現在可以在特定的物體圖像後備圖像之間在Facebook上張貼直接,所以我猜OG時選擇:圖像屬性按預期工作。不幸的是,Hootsuite算法仍然失敗。那麼,也許我會嘗試另一種社交媒體服務。

+0

我對此很好奇,並發現'url_to_image'只是'image_url'的別名。http://api.rubyonrails.org/classes/ActionView/Helpers/AssetUrlHelper.html#method-i-url_to_image – tegon