2017-04-09 6 views
0
<script 
src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
data-key="pk_test_dNbyQ3qsyTe8IAikxSfnLhBl" 
data-amount= <%= number_to_currency(@shopping_cart.total) * 100 %> 
data-name="Abound" 
data-description="Checkout" 
data-image="https://stripe.com/img/documentation/checkout/marketplace.png" 
data-locale="auto"> 
document.querySelectorAll('.stripe-button').addEventListener('click',function(){ 
    <%= @shopping_cart.clear %> 
} 

これは支払いを処理するストライプボタンです。問題はEventListenerです。ページをリフレッシュするか、別のページに移動するたびにルビーコードが実行され、カートがクリアされます。誰にでもアイデアはありますか? jsを無効にするように変更しても、ルビーが実行されますが、これについても説明できますか?Stripe JSボタンにイベントリスナーを追加

全ページがロードされている:

<h1>Shopping Cart Contents</h1> 
    <div style="font-size: 14px; "> <%= render :partial => 'shopping_cart_item', :collection => @shopping_cart.shopping_cart_it ems %> </div> 
    <div style="font-size: 18px;"><strong>Total:</strong><%= number_to_currency (@shopping_cart.total) %></div> 
    <form> 
    <script 
    src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
    data-key="pk_test_dNbyQ3qsyTe8IAikxSfnLhBl" 
    data-amount= <%= number_to_currency(@shopping_cart.total) * 100 %> 
>> data-name="Abound" 
    data-description="Checkout" 
    data-image="https://stripe.com/img/documentation/checkout/marketplace.png" 
    data-locale="auto"> 
    document.querySelectorAll('.stripe-button').addEventListener('click',function(){ 
     <%= @shopping_cart.clear %> 
    } 
    </script> 
    </form> 

    </div> 

編集:私はRubyはうまくjsファイルに埋め込まれて再生されないため、サーバー側にロードされているので、ちょうどカート用の新しいビュー・ページを作成してやってしまった何を 。

+0

この補間はどのように評価されますか?ページを読み込むときに実際のHTMLには何が入っていますか? –

+0

ボタンにイベントリスナーを追加すると、ページが更新されたときにカートがカートで消去されるのはどうなりますか?これは[XY問題]のように聞こえます(https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – charlietfl

+0

@aluanフルファイルを追加しました – user7811328

答えて

1

はルビーJavaScriptが...反対

あなたの問題は<%= @shopping_cart.clear %>は、サーバー上のすべての時間を実行することである......いないブラウザで....サーバー上で実行されていないときに、ブラウザでイベントが発生します。

サーバーに何かを送信してから、その要求でカートをクリアすることをお勧めします

関連する問題