ReferenceError:卡未定义

时间:2019-04-17 14:34:06

标签: javascript ruby-on-rails heroku stripe-payments

请在这方面我需要帮助。我使用的是stipe elements form,虽然它在开发中显示,但是在heroku生产中却不显示,这是Inspect Element给我的错误=>

ReferenceError:未定义卡

我不知道,所以需要帮助。

我使用的是Ruby 2.3&Rails 5.2.3

document.addEventListener("turbolinks:load", function() {
  const public_key = document.querySelector("meta[name='stripe-public-key']").content;
  const stripe = Stripe(public_key);
  const elements = stripe.elements();

  const style = {
  base: {
    color: '#32325d',
    lineHeight: '32px',
    fontFamily: '"Helvetica Neue", Helvetica, sans-serif',
    fontSmoothing: 'antialiased',
    fontSize: '18px',
    '::placeholder': {
      color: '#aab7c4'
    }
  },
  invalid: {
    color: '#fa755a',
    iconColor: '#fa755a'
  }
};

  const card = elements.create('card', {style: style});

  card.mount('#card-element');

  card.addEventListener('change', ({error}) => {
    const displayError = document.getElementById('card-errors');
    if (error) {
      displayError.textContent = error.message;
    } else {
      displayError.textContent = '';
    }
  });


  const form = document.getElementById('new_job');
    form.addEventListener('submit', async (event) => {
    event.preventDefault();

    const {token, error} = await stripe.createToken(card);

    if (error) {
      // Inform the customer that there was an error.
      const errorElement = document.getElementById('card-errors');
      errorElement.textContent = error.message;
    } else {
      // Send the token to your server.
      stripeTokenHandler(token);
    }
  });

    const stripeTokenHandler = (token) => {
    // Insert the token ID into the form so it gets submitted to the server
    const form = document.getElementById('new_job');
    const hiddenInput = document.createElement('input');
    hiddenInput.setAttribute('type', 'hidden');
    hiddenInput.setAttribute('name', 'stripeToken');
    hiddenInput.setAttribute('value', token.id);
    form.appendChild(hiddenInput);

    ["brand", "exp_month", "exp_year", "last4"].forEach(function(field) {
       addFieldToForm(form, token, field);
    });

    // Submit the form
    form.submit();
  }

  function addFieldToForm(form, token, field) {
    var hiddenInput = document.createElement('input');
    hiddenInput.setAttribute('type', 'hidden');
    hiddenInput.setAttribute('name', "user[card_" + field + "]");
    hiddenInput.setAttribute('value', token.card[field]);
    form.appendChild(hiddenInput);
  }
});

我实际上希望将条带元素形式显示在heroku生产上,就像在localhost上进行开发一样。

0 个答案:

没有答案