2013-10-28 45 views
0

我不是最好的在JavaScript和一直很困惑,爲什麼我的咖啡不是retreiving條紋令牌。我檢查了錯誤,並說卡返回零。我注意到,如果我在錯誤頁面上填充信用卡信息,它工作正常嗎?rails 4應用程序和條紋javascript不工作

下面是創建一個訂閱/訂閱/新?plan_id的數據類型= 1名

的是信用卡錯誤的URL,並將其引導到/訂閱/

如果我填寫信用卡詳細信息這個頁面,然後它工作並創建條紋上的訂閱。我對那個不是我的條狀圖和頁面收到此錯誤可能導致該問題

我收到此錯誤

Uncaught ReferenceError: Stripe is not defined subscriptions.js?body=1:5 
(anonymous function) subscriptions.js?body=1:5 
fire jquery.js?body=1:3049 
self.fireWith jquery.js?body=1:3161 
jQuery.extend.ready jquery.js?body=1:434 
completed 

這是我在這裏的觀點

<%= javascript_include_tag "https://js.stripe.com/v2/" %> 
<h1 class="callout callout-info">Signing up for <%= @subscription.plan.name %> Plan</h1> 
<div class="poweredby"> 
    <span><%= image_tag("/images/stripepower.png", :alt => "Safe with stripe", :class => "stripepower") %></span> 
    <span class="stripepower_description">Secure, Reliable, & Simple</span> 
</div> 
<div class="panel panel-default"> 
    <div class="panel-body"> 
    <%= form_for @subscription do |f| %> 
     <% if @subscription.errors.any? %> 
     <div class="error_messages"> 
      <h2><%= pluralize(@subscription.errors.count, "error") %> prohibited this subscription from being saved:</h2> 
      <ul> 
      <% @subscription.errors.full_messages.each do |msg| %> 
      <li><%= msg %></li> 
      <% end %> 
      </ul> 
     </div> 
     <% end %> 

     <%= f.hidden_field :plan_id %> 
     <%= f.hidden_field :email, :value => @useremail %> 
     <%= f.hidden_field :subscription_status, :value => "active" %> 
     <%= f.hidden_field :stripe_card_token %> 

     <% if @subscription.stripe_card_token.present? %> 
     Credit card has been provided. 
     <% else %> 
     <div class="form-group"> 
     <%= label_tag :card_number, "Credit Card Number" %> 
     <%= text_field_tag :card_number, nil, name: nil, class: "form-control" %> 
     </div> 
     <div class="form-group"> 
     <%= label_tag :card_code, "Security Code on Card (CVV)" %> 
     <%= text_field_tag :card_code, nil, name: nil, class: "form-control" %> 
     </div> 
     <div class="form-group"> 
     <%= label_tag :card_month, "Card Expiration" %> 
     <%= select_month nil, {add_month_numbers: true}, {name: nil, id: "card_month", class: "form-control"} %> 
     <%= select_year nil, {start_year: Date.today.year, end_year: Date.today.year+15}, {name: nil, id: "card_year", class: "form-control expirationdate"} %> 
     </div> 
     <% end %> 
     <div id="stripe_error"> 
     <noscript>JavaScript is not enabled and is required for this form. First enable it in your web browser settings.</noscript> 
     </div> 
     <div class="actions"> 
     <%= f.submit "Subscribe", class: "btn btn-primary btn-lg" %> 
     </div> 
    <% end %> 
    </div> 
</div> 

是我的咖啡腳本文件感謝軌鑄

jQuery -> 
    Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content')) 
    subscription.setupForm() 

subscription = 
    setupForm: -> 
    $('#new_subscription').submit -> 
     $('input[type=submit]').attr('disabled', true) 
     if $('#card_number').length 
     subscription.processCard() 
     false 
     else 
     true 

    processCard: -> 
    card = 
     number: $('#card_number').val() 
     cvc: $('#card_code').val() 
     expMonth: $('#card_month').val() 
     expYear: $('#card_year').val() 
    Stripe.createToken(card, subscription.handleStripeResponse) 

    handleStripeResponse: (status, response) -> 
    if status == 200 
     $('#subscription_stripe_card_token').val(response.id) 
     $('#new_subscription')[0].submit() 
    else 
     $('#stripe_error').text(response.error.message) 
     $('input[type=submit]').attr('disabled', false) 
+1

我發現JavaScript可以不只是我的視圖頁上的條紋,我把它的頭我的應用程序頁面佈局上,但它會導致許多錯誤與自舉下拉,甚至拋出了怪異erros在我的結帳頁面上。仍然需要幫助解決這個問題。謝謝 – Josh

+1

真的很傷心,我花了這麼長時間才發現,但turbolinks阻止了我的頁面重新加載javascript。它之前和其他人一起造成了問題,所以我將它從gem文件中刪除,並且一切正常。我聽說jquery turbolinks是一個很好的選擇,但現在我要通過了。 – Josh

+1

所有你需要做的就是禁用鏈接的turbolinks,帶你到頁面的Javascript - 我有同樣的問題,因爲你 – tommyd456

回答

0

如果你想包括條紋JavaScript只在結賬頁面上,您可以將Ryan Bates的咖啡標籤貼在if聲明中。

if typeof(Stripe) != "undefined" 
    Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content')) 
    subscription.setupForm() 
相關問題