Javascript 中带 Ruby on Rails ENV 变量的条纹

Ton*_*Tau 6 javascript ruby ruby-on-rails stripe-payments

我不确定如何将我的 Publishable 密钥放入我的 JavaScript 代码中。当我将可发布键的值直接放入 JavaScript 时,它工作正常。当我尝试使用环境变量时它不起作用。

配置/初始化程序/stripe.rb

Rails.configuration.stripe = {
  :publishable_key => ENV['PUBLISHABLE_KEY'],
  :secret_key      => ENV['SECRET_KEY']
}

Stripe.api_key = Rails.configuration.stripe[:secret_key]
Run Code Online (Sandbox Code Playgroud)

javascripts/charges.js.erb

Stripe.setPublishableKey(<%= Rails.configuration.stripe[:publishable_key] %>);

var stripeResponseHandler = function(status, response) {
  var $form = $('#payment-form');

  if (response.error) {

        $form.find('.payment-errors').text(response.error.message);
        $form.find('button').prop('disabled', false);
    } else {

        var token = response.id;

        $form.append($('<input type="hidden" name="stripeToken" />').val(token));

        $form.get(0).submit();
    }
};

jQuery(function($) {
    $('#payment-form').submit(function(e) {
      var $form = $(this);


      $form.find('button').prop('disabled', true);

      Stripe.createToken($form, stripeResponseHandler);

      return false;
    });
});
Run Code Online (Sandbox Code Playgroud)

tom*_*456 5

不完全是一个解决方案,但我喜欢 Railscast 方式(http://railscasts.com/episodes/288-billing-with-stripe)使用环境变量设置元标记,然后使用 Javascript 调用元中的值标签。您想要的位从大约 4 分 10 秒开始

<%= tag :meta, :name => "stripe-key", :content => STRIPE_PUBLIC_KEY %>
Run Code Online (Sandbox Code Playgroud)

那么JS代码是:

Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content'))
Run Code Online (Sandbox Code Playgroud)

我不喜欢直接将环境变量插入 JS。