在application.html.erb文件中使用Facebook OG元标记

3
在我的rails应用程序中,我希望动态地将FB OG Meta标签与用户当前所在的页面连接起来。我觉得这应该很简单,但是我不能让它正常工作。
例如,我有“想法”页面,在此页面上有一个想法标题和想法描述。
目前,在我的Application.html.erb文件中,我有以下内容(并且标题会报NoMethodError错误):
<meta property="og:title" content= <%= "#{@idea.title.titleize}" %>/>
<meta property="og:url" content= <%= "http://myurl.com/ideas/#{@idea.id}" %>/>
<meta property="og:description" content= <%= "#{@idea.short_description}" %>/>

我的语法存在问题吗?这些实例变量是否可用?我不确定我完全理解这是如何工作的。谢谢!

4个回答

9

是的,就像noob所提到的,让内容声明在引号内。

<meta property="og:description" content= "<%= @idea.short_description %>" />

为了使这些元标签在Rails中变得动态,人们首先开始使用Ryan Bates在漂亮的页面标题railscast中描述的漂亮页面标题方法。
然而,我刚刚发现了这个看起来非常有前途的meta-tags宝石: meta-tags 使用这个宝石,管理任何元标记,使它们动态和SEO友好。 例如:
set_meta_tags :title => 'Member Login'
# <title>Some Page Title</title>

一次轻松设置所有Facebook:og标签:

  set_meta_tags :og => {
                  :title    => 'The Rock',
                  :type     => 'video.movie',
                  :url      => 'http://www.imdb.com/title/tt0117500/',
                  :image    => 'http://ia.media-imdb.com/rock.jpg',
                  :video    => {
                    :director => 'http://www.imdb.com/name/nm0000881/',
                    :writer   => ['http://www.imdb.com/name/nm0918711/', 'http://www.imdb.com/name/nm0177018/']
                  }
                }

当您调用<%=display_meta_tags%>时,上面的代码将输出以下html: <meta property="og:title" content="The Rock"/> <meta property="og:type" content="video.movie"/> <meta property="og:url" content="http://www.imdb.com/title/tt0117500/"/> <meta property="og:image" content="http://ia.media-imdb.com/rock.jpg"/> <meta property="og:video:director" content="http://www.imdb.com/name/nm0000881/"/> <meta property="og:video:writer" content="http://www.imdb.com/name/nm0918711/"/> <meta property="og:video:writer" content="http://www.imdb.com/name/nm0177018/"/> 源代码和Github库中有更多示例。最后一个标签集优先级最高,因此如果您在布局中设置了一个标签,然后在页面中设置了另一个标签,则页面中的标签将优先生效。
如果要使用此功能,请确保您的布局页面(例如:application.html.erb)中有<%= display_meta_tags %>

嘿,丹尼,Gem 是否与 Rails 4 兼容? - Mini John
看起来是这样的(我没有遇到任何问题,并且已经升级到Rails 4),但是我没有看到任何最近的提交提到与Rails 4有关的内容,而且它也没有在http://ready4rails4.net/上列出。 - Danny
1
那个 gem 真是太棒了...哇。我花了几分钟才找到...从你的控制器中调用 set_meta_tags,并将其与 layouts/application 头部中的 <%= display_meta_tags %> 配对使用。 - Dudo

1

我相信正确的语法是:

<meta property="og:description" content= "<%= @idea.short_description %>" />

0
请阅读我的博客文章,详细解释了在整个Rails应用中实现这一点的简单方法 - 也许你可以为添加到特定页面进行推断。我不确定它是否会解决您的具体问题,但可能有一些有用的调试信息。http://blog.gingergriffis.com/post/59812374302/rails-app-thumbnail-on-facebook 我博客文章的主要重点可能有用的是Facebook调试器工具:http://developers.facebook.com/tools/debug
以下是我在application.html.erb文件中使用的设置:
<meta property=”og:title” content=”Ginger Griffis” /> 
<meta property=”og:type” content=”website” /> 
<meta property=”og:url” content=”http://www.gingergriffis.com/” /> 
<meta property=”og:image” content=”http://www.gingergriffis.com/assets/mylogolarge.jpg” /> 
<meta property=”og:description” content=”I am a RoR web dev...” />

谢谢kleopatra--我对此还比较新,感谢您的反馈。我博客文章的主要观点可能有用的是Facebook调试工具:https://developers.facebook.com/tools/debug。这是我在application.html.erb文件中使用的设置:<meta property=”og:title” content=”Ginger Griffis” /> <meta property=”og:type” content=”website” /> <meta property=”og:url” content=”http://www.gingergriffis.com/” /> <meta property=”og:image” content=”http://www.gingergriffis.com/assets/mylogolarge.jpg” /> <meta property=”og:description” content=”I am a RoR web dev...” /> - Sedona
新手不是问题,希望我的提醒足够温和。另外,你可以编辑你的答案并在评论中添加细节,这样会更易读。 - kleopatra

0

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