试图将Facebook Pixel添加到Heroku HAML网站

时间:2017-05-31 23:57:14

标签: facebook heroku haml

我正在尝试将Facebook Pixel添加到我们的Heroku HAML网站。谷歌分析工作是将_google_analytics.html.haml中的Javascript列在Home.html.haml文件中,该文件位于以下引用的同一布局文件夹中:

    !!!
%html
%head    
= javascript_include_tag "application", "data-turbolinks-track" => true
= csrf_meta_tags    
= render 'layouts/bold_chat'
= render 'layouts/google_analytics'
= render 'layouts/fb_pixel'

当网站以Google Analytics的方式加载时,不确定我遗漏了什么但像素未加载。谢谢你,dev离开了组织,管理员正在收拾它们。哎哟!我能够启动脚本但该站点不会在heroku中加载我收到加载错误。帮助

这是实际的JavaScript

<!-- Facebook Pixel Code -->
<script>
!function(f,b,e,v,n,t,s)
{if(f.fbq)return;n=f.fbq=function(){n.callMethod?
n.callMethod.apply(n,arguments):n.queue.push(arguments)};
if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
n.queue=[];t=b.createElement(e);t.async=!0;
t.src=v;s=b.getElementsByTagName(e)[0];
s.parentNode.insertBefore(t,s)}(window,document,'script',
'https://connect.facebook.net/en_US/fbevents.js');
fbq('init', '123123123123123'); 
fbq('track', 'PageView');
</script>
<noscript>
<img height="1" width="1"
src="https://www.facebook.com/tr?id=123123123123&ev=PageView
&noscript=1"/>
</noscript>
<!-- End Facebook Pixel Code -->

好的,所以我尝试根据另一篇文章将其转换为Coffee脚本。代码是

    !((f, b, e, v, n, t, s) ->
      if f.fbq
        return
      n =
      f.fbq = ->
        if n.callMethod then n.callMethod.apply(n, arguments) else 
        n.queue.push(arguments)
        return

  if !f._fbq
    f._fbq = n
  n.push = n
  n.loaded = !0
  n.version = '2.0'
  n.queue = []
  t = b.createElement(e)
  t.async = !0
  t.src = v
  s = b.getElementsByTagName(e)[0]
  s.parentNode.insertBefore t, s
  return
  )(window, document, 'script', 
   'https://connect.facebook.net/en_US/fbevents.js')
  fbq 'init', '252482198497323'
  fbq 'track', 'PageView'

现在我在尝试部署到测试时收到错误 正在运行:rake assets:预编译  耙子流产了!  NoMethodError:未定义的方法`+ @&#39; for [&#34; fb_pixels&#34;]:Array

2 个答案:

答案 0 :(得分:0)

更新,问题在于加载图片部分..

<noscript>
<img height="1" width="1"
src="https://www.facebook.com/tr?id=123123123123&ev=PageView
&noscript=1"/>
</noscript>

一旦我从脚本中删除了这段代码,并将其自身加载到索引页面,就会有效。

答案 1 :(得分:0)

当用户在浏览器中禁用脚本或浏览器不支持脚本时,将使用 noscript 标签。理想情况下,您不必删除这部分代码。这是应该可以工作的 haml 代码。

:javascript
  !function(f,b,e,v,n,t,s)
  {if(f.fbq)return;n=f.fbq=function(){n.callMethod?
  n.callMethod.apply(n,arguments):n.queue.push(arguments)};
  if(!f._fbq)f._fbq=n;n.push=n;n.loaded=!0;n.version='2.0';
  n.queue=[];t=b.createElement(e);t.async=!0;
  t.src=v;s=b.getElementsByTagName(e)[0];
  s.parentNode.insertBefore(t,s)}(window,document,'script',
  'https://connect.facebook.net/en_US/fbevents.js');
  fbq('init', '123123123123'); 
  fbq('track', 'PageView');

%noscript  
  %img{:height => "1", :width => "1", :src => "https://www.facebook.com/tr?id=123123123123&ev=PageView&noscript=1"}