将Facebook元标记放在Rails应用程序中

我已经实现了Omniauth和Koala7gem来将我的应用程序与Facebook集成。 除了使用自定义对象发布自定义操作的一个小问题外,一切都运行良好。

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

   <meta property="og:url" content="" />    

问题是facebook 对象调试器将其识别为type:webpage而不是type:post 。 我想这是因为/layouts/application.html.erb中已经存在默认的head标签,如下所示:

  sdff  "all" %>    

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

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

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

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

 <% content_for :head do %>   " />   <% end %> 

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

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