2013-09-13 3 views
0

Я использую Devise 3 и Stripe 1.8.4 в приложении Rails 4. Я был бы признателен, если бы кто-нибудь мог просмотреть мой javascript. У меня есть ошибка, которую я не смог найти. Его ели меня в течение последних нескольких дней. Я уверен, что это ошибка javascript, так как ошибка из полосы - «Пустая строка, заданная для карты». Я предполагаю, что данные карты не отправляются, потому что что-то связано с javascript. Спасибо заранее за вашу помощь.Устранение неполадок javascript для Stripe

Моя форма выглядит следующим образом:

<%= simple_form_for(resource, :as => resource_name, :url => 
registration_path(resource_name), :id => 'payment-form', method: :post) do |f| %> 
    <%= f.error_notification %> 

    <!-- Create Account --> 
    <div class="inputs"> 
    <%= f.input :first_name, :autofocus => true, :placeholder => "First Name", label:false %> 
    <%= f.input :last_name, :placeholder => "Last Name", label:false, :required => true %> 
    <%= f.input :email, :placeholder => "Email Address", label:false, :required => true %> 
    <%= f.input :password, :placeholder => "Password", label:false, :required => true %> 
    <%= f.input :password_confirmation, :placeholder => "Password Confirmation", label:false, :required => true %> 
    <!-- Terms --> 
    <%= f.input :terms, as: :boolean, label: 'I agree to the terms of service.' %> 
    <%= f.input :autorenew, as: :boolean, label: 'Automatically renew my account each year.' %> 

    </div> 

    <!-- Payment Information --> 

     <span class="payment-errors"></span> 

     <div class="row"> 
      <div class="small-8 columns"> 
      <input type="text" size="20" data-stripe="number" placeholder="Credit Card Number"/> 
      </div> 
     </div> 

     <div class="row"> 
      <div class="small-3 columns"> 
      <input type="text" size="4" data-stripe="cvc" placeholder="CVC Code"/> 
      </div> 
     </div> 

     <div class="row"> 
      <div class="small-4 columns"> 
      <div class="row"> 
       <div class="small-5 columns"> 
       <input type="text" size="2" data-stripe="exp-month" placeholder ="MM"/> 
       </div> 
       <div class="small-6 columns"> 
       <input type="text" size="4" data-stripe="exp-year" placeholder="YYYY"/> 
       </div> 
      </div> 
      </div> 
     </div> 

     <div class="row"> 
      <div class="small-4 columns"> 
      <input type="text" size="10" data-stripe="coupon" placeholder="Coupon Code"/> 
      </div> 
     </div> 

    <%= f.input :stripe_token, as: :hidden %> 

     <div class="actions"> 
     <%= f.submit "Subscribe", :class => "button radius" %> 
     </div> 

    <% end %> 

браузер:

<script type="text/javascript" src="https://js.stripe.com/v2/"></script> 
<script type="text/javascript"> 
$(function($){ 
Stripe.setPublishableKey('<%= Rails.configuration.stripe[:publishable_key] %>'); 

$('#payment-form').submit(function(event) { 
    var form = $('#payment-form'); 
    form.find('button').prop('disabled', true); 
    Stripe.createToken(form, stripeResponseHandler); 
    return false; 
}); 

function stripeResponseHandler = function(status, response) { 
    var form = $('#payment-form'); 
    if (response.error) { 
    // Show the errors on the form 
    form.find('.payment-errors').text(response.error.message); 
    form.find('button').prop('disabled', false); 
    } else { 
    // token contains id, last4, and card type 
    var token = response.id; 
    // Insert the token into the form so it gets submitted to the server 
    form.append($('<input type="hidden" name="stripeToken" />').val(token)); 
    // and submit 
    form.get(0).submit(); 
    } 
}; 

});

Благодарим вас за отзыв!

+0

Пробовал изменить функцию на var, но он не работал. – ERG

ответ

0

Я снова отвечаю на свой вопрос. Оказывается, в коде нет ничего плохого. Этот код не работал на мой взгляд, но если я переведу js на application.js, транзакция с Stripe работает отлично. Не знаю, почему.

Смежные вопросы