在Ruby on Rails中的og:image元标签

6

我在页面上定义了一些动态图像,如下所示:

<%= image_tag(@recipe.image.url(:fixed), :class => 'recipe_image_show') %>

我正在寻找一种方法来使用这段代码定义og:image。下面所示的og:description代码运行良好:
<meta property="og:description" content= "<%= @recipe.description %>" />

但是,如果我使用以下代码,则它不起作用:
<meta property="og:image" content='<%= image_tag(@recipe.image.url(:fixed), :class => 'recipe_image_show') %>'/>

有什么建议吗?我意识到这里使用了单引号,但由于某种原因使用双引号会导致页面忽略 meta 标签的 '/>' 部分并将其显示为文本。
3个回答

6
根据聊天记录,发帖者正在S3上托管图像。
因此,请按照以下方式定义meta标签:
<meta property="og:image" content='<%= @recipe.image.url(:fixed) %>'/>

这将被转化为:
<meta property="og:image" content='https://s3....amazonaws.com/path/to/image.jpg'/>

注意:

如果图像存储在您自己的应用程序服务器上,则可以使用以下方法:

<meta property="og:image" content='<%= image_url @recipe.image.url(:fixed) %>'/>

我在app/assets/images/my_image.png中有一张图片,并使用image_url('my_image.png'),但是我看到:提供的og:image URL,https://www.example.com/images/my_image.png无法被处理为图像,因为它具有无效的内容类型。你有什么想法我需要做什么? - stevec

1
如果您正在使用带有Webpack的Rails 6,则此方法对我有效。
- meta 'og:image': "#{asset_pack_url "static/image.webp"}"

请参考github上的asset_pack_url进行相关编程内容的查阅。

你的图片路径可能会有所不同,可查询manifest.json文件以了解此方法。


0

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接