2016-08-15 11 views
-1

現在、私はRuby on Railsアプリケーションで作業していますが、私は以下のJSをアプリケーションで動作させようとしています。私が最初に気がついたのは、turbolinks 5.0がページの初期ロード時にJSをロードできないようにしていたため、以下のJSをロードするためにページをリフレッシュする必要がありました。私はいくつかのグーグルを行い、this stackoverflow answerに出くわしましたが、JSを正しく実行してエラーをスローすることができません。すべての助けが大いに感謝されるでしょう。上記のコメントとしてJavascript TypeError:変数が定義されていません

orders.js

console.log('inside orders.js'); 

$(document).on('turbolinks:load', function() { 
// Your JS here 
var payment; 

jQuery(function() { 
    Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content')); 
    return payment.setupForm(); 
}); 

payment = { 
    setupForm: function() { 
    return $('#new_order').submit(function() { 
     $('input[type=submit]').attr('disabled', true); 
     Stripe.card.createToken($('#new_order'), payment.handleStripeResponse); 
     return false; 
    }); 
    }, 
    handleStripeResponse: function(status, response) { 
    if (status === 200) { 

     // return alert(response.id); 
     $('#new_order').append($('<input type="hidden" name="stripeToken" />').val(response.id)); 
     return $('#new_order')[0].submit(); 

    } else { 

     // return alert(response.error.message); 
     return $('#stripe_error').text(response.error.message).show(); 

    } 
    } 
}; 
}); 
+0

'?どの行がエラーをスローしますか?何が起こったときのランタイム値ですか? – David

+0

Jquery(function(){return "sth"});ナンセンスだ –

+1

多くの詳細がなければ、あなたは '$'で準備が整った状態でjQueryを実行していて、jQueryが 'jQuery'で準備が整っているかどうかを再度確認します。 jQuery' –

答えて

0

、問題がjQuery文がJSに位置していた場所に関連していました。私はJSを次のように再構成し、すべてが今働いているように見えます。どのようなエラー - ` "エラーをスローせずに"

orders.js

console.log('inside orders.js'); 

$(document).on('turbolinks:load', function() { 
// Your JS here 
var payment; 

payment = { 
    setupForm: function() { 
    return $('#new_order').submit(function() { 
     $('input[type=submit]').attr('disabled', true); 
     Stripe.card.createToken($('#new_order'), payment.handleStripeResponse); 
     return false; 
    }); 
    }, 

    handleStripeResponse: function(status, response) { 
    if (status === 200) { 

     // return alert(response.id); 
     $('#new_order').append($('<input type="hidden" name="stripeToken" />').val(response.id)); 
     return $('#new_order')[0].submit(); 

    } else { 

     // return alert(response.error.message); 
     return $('#stripe_error').text(response.error.message).show(); 

    } 
    } 
}; 

jQuery(function() { 
    Stripe.setPublishableKey($('meta[name="stripe-key"]').attr('content')); 
    return payment.setupForm(); 
}); 
}); 
関連する問題