2

我一直在很难让Facebook识别<meta>标签,其中包含.erb。这里有一个例子:在Facebook中包含.erb <meta>标签

<meta property="og:title" content="Projects <%= @company.name.present? ? ('with ' + @company.name) : '' %>" /> 

下面的几个细节:

  1. 网页的源文件充分显示了元标题和我期望的那样。
  2. 我把logger debug @company.name放在meta标签的正上方,我看到了预期的结果。
  3. 在FB上,我看到的只是“项目”。

你知道这里发生了什么吗?

回答

0

这是因为你的红宝石包含在一个字符串中是错误的。

"Projects <%= @company.name.present? ? ('with ' + @company.name) : '' %>" 
--> "Projects <%= @company.name.present? ? ('with ' + @company.name) : '' %>" 

<%= "Projects #{ @company.name.present? ? ('with ' + @company.name) : '' }" %> 
--> "Projects with Apple" 

<%= "Projects " + @company.name.present? ? ('with ' + @company.name) : '' %> 
--> "Projects with Apple" 

选择最后两个解决方案之一来解决您的问题!

+0

这不是亚历山大。第二个,当插入到一个html字符串中时,按原样显示,第三个被FB忽略。出于某种原因,它似乎在避免.erb生成的所有内容。 – sscirrus

+0

哦,对。我的第二种语法也是错误的(我现在编辑它)。你可以在文件的其他部分插入ruby代码吗? –

+0

绝对地 - 红宝石在任何地方都能正常工作,除了显然在这类标签中(或者某种程度上被Facebook的.js忽略,尽管这对我来说也没什么意义)。 – sscirrus

1

只是尝试使用''而不是“”;例如:

<meta property="og:description" content='<%= @job_details.description %>' /> 

这不应该截断字符串

+0

你知道为什么报价对Alessio有影响吗? – sscirrus

+0

可以肯定的一个区别是,用双引号可以使用插值。 –