加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 在Facebook Rails应用程序中放置Facebook Meta

发布时间:2020-12-17 01:52:35 所属栏目:百科 来源:网络整理
导读:我已经实现了Omniauth和Koala7宝石,以便将我的应用程序与Facebook集成. 除了使用自定义对象发布自定义操作的一个小问题外,一切都运行良好. 问题是我的对象url应该是新创建的帖子的显示页面,例如/ posts / 1.为了使这个页面被识别为facebook对象,我需要将face
我已经实现了Omniauth和Koala7宝石,以便将我的应用程序与Facebook集成.
除了使用自定义对象发布自定义操作的一个小问题外,一切都运行良好.

问题是我的对象url应该是新创建的帖子的显示页面,例如/ posts / 1.为了使这个页面被识别为facebook对象,我需要将facebook元标记放在show.html.erb之上,如下所示:

<head prefix="og: http://ogp.me/ns# fb: http://ogp.me/ns/fb# sdff: http://ogp.me/ns/fb/sdff#">
  <meta property="fb:app_id" content="myid" /> 
  <meta property="og:type"   content="sdff:post" /> 
  <meta property="og:url"    content="<%= "http://sdff.herokuapp.com" + post_path(@post) %>" /> 
  <meta property="og:title"  content="Sample" /> 
  <meta property="og:image"  content="https://fbstatic-a.akamaihd.net/images/devsite/attachment_blank.png" /> 
</head>

问题是facebook object debugger将其识别为类型:网页而不是类型:post.我认为这是因为/layouts/application.html.erb中已经存在默认的head标记,如下所示:

<head>
  <title>sdff</title>
  <%= stylesheet_link_tag    "application",:media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
</head>

我假设这是因为对象调试器特别指出:

身体中的元标签:你有你的标签.这可能是因为您的格式错误并且它们在解析树中降低了,或者您不小心将Open Graph标记放在了错误的位置.无论哪种方式,您都需要在标签可用之前修复它.

那么我该如何解决这个问题呢?
我需要将facebook元标记放在我的show.html.erb中,但页面本身已经是整个应用程序布局的一部分.

解决方法

根据您发布的错误消息,我收集您的元标记不在< head>中他们应该如此.这是使用content_for块的一个很好的例子.在show.html.erb视图中,将所需的元标记放入content_for:head块.这样可以保存html,并允许您将其插入布局中的其他位置.

<% content_for :head do %>
  <meta property="fb:app_id" content="myid" /> 
  <meta property="og:type"   content="sdff:post" /> 
  <meta property="og:url"    content="<%= "http://sdff.herokuapp.com" + post_path(@post) %>" /> 
  <meta property="og:title"  content="Sample" /> 
  <meta property="og:image"  content="https://fbstatic-a.akamaihd.net/images/devsite/attachment_blank.png" /> 
<% end %>

然后只需将yeild(:head)添加到您的应用程序模板中.您放置在show视图中的html将插入应用程序模板中的此位置.我们在这里检查nil,以便将产量视为可选的.

<head>
  <title>sdff</title>
  <%= stylesheet_link_tag    "application",:media => "all" %>
  <%= javascript_include_tag "application" %>
  <%= csrf_meta_tags %>
  <%= content_for?(:head) ? yield(:head) : '' %>
</head>

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读