2016-11-30 25 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