因为我遇到Hootsuite在Amazon S3上检索图像存储的问题,我想通过og:image标签添加“后备”图像。 (让我们在这里忽略S3问题,那是另一天。) 图像存储在我的Heroku本地和没有指定图像的文章中,我成功地使用它如下:
<%= 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 :(得分:0)
尝试没有路径中的斜线。添加它时,rails假定您需要绝对路径。
image_url("fallback/my-fallback-image.jpg")
答案 1 :(得分:0)
好的,我明白了。 url_to_image
使用哈希提供正确的完整网址:
provide(:og_image, og_image(url_to_image("fallback/my-fallback-image.jpg")))
我现在可以直接在Facebook上发布时选择特定的文章图像和后备图像,因此我猜测og:image属性按预期工作。不幸的是,Hootsuite算法仍然失败。也许我会尝试另外一个社交媒体服务。