如何解决元标记og:用于Facebook分享Rails应用程序的图像
我有一个包含文章的页面,并且可以从后端为文章设置图像。在表演动作中,我想获取元标记og:image,以便与该图像共享Facebook中的文章。 我用以下方式显示图像:
<%= image_tag @article.image_url,:class => "img-fluid" %>
但是当我在url中复制并粘贴网址时,我也无法在facebook帖子中自动获得图片。
您有什么建议吗? 预先谢谢你。
解决方法
根据此处的这篇文章,您需要更多的设置。
https://www.lewagon.com/blog/setup-meta-tags-rails
- 在
config/meta.yml
中创建默认元标记,并将其加载到初始化程序中:
meta_product_name: "Product Name"
meta_title: "Product name - Product tagline"
meta_description: "Relevant description"
meta_image: "cover.png" # should exist in `app/assets/images/`
# config/initializers/default_meta.rb
# Initialize default meta tags.
DEFAULT_META = YAML.load_file(Rails.root.join("config/meta.yml"))
您可以在application.html.erb
<title><%= meta_title %></title>
<meta name="description" content="<%= meta_description %>">
<!-- Facebook Open Graph data -->
<meta property="og:title" content="<%= meta_title %>" />
<meta property="og:type" content="website" />
...
我将其缩短了,但请参阅文章以获取完整代码。
- 对于动态标题或图像,请使用Rails的
content_for
方法并创建一个辅助方法:
<!-- app/views/any_model/any_view.html.erb -->
<% content_for :meta_image,image_path(@any_model.photo.path) %>
助手将如下所示:
# app/helpers/meta_tags_helper.rb
module MetaTagsHelper
def meta_image
meta_image = (content_for?(:meta_image) ? content_for(:meta_image) : DEFAULT_META["meta_image"])
# little twist to make it work equally with an asset or a url
meta_image.starts_with?("http") ? meta_image : image_url(meta_image)
end
end
再次简化,但是您会在源代码中找到完整的代码。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。