Я не уверен, как разместить мой опубликованный ключ в моем JavaScript-коде. Когда я размещаю значение публикуемого ключа непосредственно в JavaScript, он отлично работает. Когда я пытаюсь использовать переменные среды, это не работает.Stripe w/Ruby on Rails Переменные ENV в Javascript
конфигурации/Инициализаторы/stripe.rb
Rails.configuration.stripe = {
:publishable_key => ENV['PUBLISHABLE_KEY'],
:secret_key => ENV['SECRET_KEY']
}
Stripe.api_key = Rails.configuration.stripe[:secret_key]
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;
});
});
Большое вам спасибо, ребята! – TonyTau
Почему вам не нравится вставлять переменные среды в JS напрямую? Я все еще новичок, было бы неплохо узнать причину этого. – TonyTau
Одна из причин, почему лучше не хранить ключи и т. Д. В источнике javascript, заключается в том, что вам нужно перекомпилировать актив при изменении переменной ENV. Если вы храните его в теге meta, вам просто нужно перезапустить сервер. – Jeriko