【问题标题】:How to pass a Ruby session variable to a JavaScript tag如何将 Ruby 会话变量传递给 JavaScript 标记
【发布时间】:2019-07-09 17:32:47
【问题描述】:

我正在与使用 JavaScript 标记进行销售归因的供应商合作。我需要将会话变量传递给标签。标签正在触发,我可以在日志中看到变量,但在标签中看不到。

我通过将puts{variable} 添加到控制器来验证会话变量是否已设置,并在日志中查看正确的值,但无法获取 JavaScript 标记中的变量。

这是标签代码:

:javascript

  /* Extole Script */
  (function(c,e,k,l,a){c[e]=c[e]||{};for(c[e].q=c[e].q||[];a<l.length;)k(l[a++],c[e])})(window,"extole",function(c,e){e[c]=e[c]||function(){e.q.push([c,arguments])}},["createZone"],0);
  /* End Extole Script */
   extole.createZone({
     name: 'conversion',
     data: {
       "first_name" = <%= fist_name %>,
       "last_name" = <%= last_name%>,
       "email" = <%= email_address>,

     }
  });

这是控制器代码:

  def index

    if session['cart_products'] == nil
      session['cart_products'] = {}
    end
    puts "\n\nCoupon\n\n"
    puts session['coupon_code']
    puts session['email_address']
    puts session['first_name']
    puts session['last_name']
    puts session['carttotal']
    puts "\n\n"
    @cart_size = session['cart_products'].length

  end

日志显示session['first_name'] 值。

【问题讨论】:

    标签: javascript ruby tags haml


    【解决方案1】:

    您是否尝试在视图中使用相同的代码,例如:

    "first_name" = <%= session["fist_name"] %>
    

    【讨论】:

    • 当我尝试这个时,我在页面源代码中看到这个 ``` ```
    • @kpedrick1 我的意思是在 index.js.erb 或 index.json.jbuilder 视图中包含将要呈现的代码
    【解决方案2】:

    您的模板似乎使用了 HAML(根据 :javascript 过滤器判断),但您尝试在内部使用 ERB 插值。

    您需要使用正确的 HAML 插值:

    :javascript
    
      /* Extole Script */
      (function(c,e,k,l,a){c[e]=c[e]||{};for(c[e].q=c[e].q||[];a<l.length;)k(l[a++],c[e])})(window,"extole",function(c,e){e[c]=e[c]||function(){e.q.push([c,arguments])}},["createZone"],0);
      /* End Extole Script */
       extole.createZone({
         name: 'conversion',
         data: {
           "first_name" = '#{fist_name}',
           "last_name" = '#{last_name}',
           "email" = '#{email_address}',
    
         }
      });
    

    周围的单引号供 JS 将它们解释为字符串。

    文档:https://haml.info/docs/yardoc/file.REFERENCE.html#ruby-interpolation-

    【讨论】:

      猜你喜欢
      • 2011-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-12-14
      相关资源
      最近更新 更多