我正在与一家使用 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 "nnCouponnn"
puts session['coupon_code']
puts session['email_address']
puts session['first_name']
puts session['last_name']
puts session['carttotal']
puts "nn"
@cart_size = session['cart_products'].length
end
日志显示session['first_name']
值。
您是否尝试在视图中使用相同的代码,例如:
"first_name" = <%= session["fist_name"] %>
看起来您正在为模板使用 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-