2012-02-18 48 views
0

與標題一樣,我確保所有需要的JS文件都包含在元標記中,包括jquery-rails/coffee-rails gem,鏈接到以防萬一。JQuery不會觸發/使用我的Rails 3.2項目

這是一個來自Ryan Bates的關於Stripe的修改腳本,根據我的理解,它可以通過檢測表單中的提交動作來啓動。

因爲我不熟悉JS或CoffeeScript,所以我不能真正指出這裏存在什麼問題。

希望能得到任何幫助。

的donations.js文件:

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

donation = 
    setupForm: -> 
    $('#new_donation').submit -> 
     $('input[type=submit]').attr('disabled', true) 
     if $('#card_number').length 
     donation.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, donation.handleStripeResponse) 

    handleStripeResponse: (status, response) -> 
    if status == 200 
     alert(response.id) 
    else 
     alert(response.error.message) 

的捐贈/ new.html.erb形式

<%= form_for(@donation) do |f| %> 
       <div class="field"> 
        <%= f.label :from %> 
        <%= f.text_field :from %> 
       </div> 
       <div class="field"> 
        <%= label_tag :card_number, "Credit Card Number" %> 
        <%= text_field_tag :card_number, nil, :name => nil %> 
       </div> 
       <div class="field"> 
        <%= label_tag :card_code, "Security Code (CVV)" %> 
        <%= text_field_tag :card_code, nil, :name => nil %> 
       </div> 

       <div class="field"> 
        <%= label_tag :card_month, "Card Expiration" %> 
        <%= select_month nil, {:add_month_numbers => true}, {:name => nil, :id => "card_month"} %> 
        <%= select_year nil, {:start_year => Date.today.year, :end_year => Date.today.year+15}, {:name => nil, :id => "card_year"} %> 
       </div> 
       <div class="field"> 
        <%= f.label :Notes %> 
        <%= f.text_field :note %> 
       </div> 
       <br> 
       <center> 
        <span class="BigBold">Amount: $2.50</span> 
        <%= f.hidden_field :amount, {:value => "2,5" } %><br> 
       </center> 
       <br> 
       <center> 
        <%= f.submit "Donate Now", :class => 'donate-button' %> 
       </center> 
      <% end %> 

回答

2

您的JavaScript似乎是,嗯,CoffeeScript的 - 使確定它被放在它自己的donations.js.coffee文件中,並且你在包括coffee-rails寶石。

標準調試技術在這裏很有用 - 嘗試添加alert("It lives!")什麼的初始jQuery ->行之後,看看是否的document.ready處理程序不斷被調用。

如果沒有,檢查以確保該donations.js.coffee文件被加載在首位,如果沒有,請確保你無論是在你的頁面的頭部加載它,或者你有這樣的事情在application.js

//= require jquery 
//= require donations 

或者,如果你只是想在app/assets/javascripts一切:

//= require jquery 
//= require_tree . 
+0

感謝Peter的回覆,我在gemfile中包含了咖啡欄。當我發佈時,我忘記刪除processCard:部分之前的alert()。 – 2012-02-18 22:53:41

+0

另外,這裏是我使用https://github.com/railscasts/episode-288/blob/master/saas-after/app/assets/javascripts/subscriptions.js.coffee的來源 – 2012-02-18 22:59:46

0

彼得是正確的,你的CoffeeScript代碼應該被正確命名,以便它可以被翻譯成JavaScript。

另一個調試策略是查看發送到瀏覽器的html/js源。使用view source命令查看html源代碼。然後點擊對包含翻譯的donations.js的js鏈接的引用。

相關問題