2012-02-18 35 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宝石が含まれていることを確認してください。

ここでは標準的なデバッグ手法が役に立ちます - jQuery ->行の後にalert("It lives!")などを追加して、document.readyハンドラが呼び出されているかどうかを確認してください。

ない場合は、donations.js.coffeeファイルが最初の場所でロードされ、そうでない場合、あなたはどちらかあなたのページのヘッダーにそれをロードしている、またはあなたがapplication.jsにこのような何かを持っていることを確認していることを確認してください:

//= require jquery 
//= require donations 

それとも、あなただけapp/assets/javascriptsにすべてのものを含める場合:

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

応答のためにありがとうPeter、私はコーヒーレールがgemfileに含まれています。私が投稿したときに、processCardの前にalert()を削除するのを忘れてしまった:part。 –

+0

また、私が使っているソースはhttps://github.com/railscasts/episode-288/blob/master/saas-after/app/assets/javascripts/subscriptions.js.coffeeです –

0

ピーターはそれがJavaScriptに変換することができるように、あなたのCoffeeScriptのコードが適切に名前を付ける必要があり、正確です。

追加のデバッグ方法は、ブラウザに送信されているhtml/jsソースを調べることです。 htmlソースを表示するには、view sourceコマンドを使用します。次に、翻訳されたdonations.jsを含むjsリンクへの参照をクリックします。

関連する問題