缓存是我能想到的唯一解释。我正在使用Stripe,我有以下Javascript来设置它:
$(function() {
console.log("Stripe: ");
console.log($('meta[name="stripe-key"]').attr('content'));
Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'));
issueOrder.setupForm();
});
当我直接访问页面(即,将确切的URL放在地址栏中)我创建条带订单时,这非常有用。 console.log记录我正在测试的内容,条带令牌已设置,付款顺利完成。
但是,当我从网站上先前访问的页面访问该页面时(即,单击指向付款页面的链接),没有记录任何内容并且未设置条带标记,从而导致服务器端错误。
似乎javascript被调用一次,但是当呈现新页面时,它会以某种方式识别出它已被调用,因此它不再调用javascript。不幸的是,Stripe的可发布密钥没有被缓存,因此这会导致服务器端错误。我是否正确地思考这个问题,如果是这样,我该如何解决这个问题呢?
答案 0 :(得分:1)
这是因为Turbolinks - 只需覆盖链接的turbolinks,即可将您带到使用Stripe的页面。
<a href="url" data-no-turbolink>Link Text</a>
或Rails方式
<%= link_to 'Link Text', url_path, 'data-no-turbolink' => true %>