2017-04-09 3 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 %> 
} 

Dies ist eine Stripe-Schaltfläche, die Zahlungen verarbeitet. Das Problem ist der Eventlistener. Jedes Mal, wenn ich die Seite aktualisiere oder zu einer anderen Seite gehe, wird der Ruby-Code ausgeführt und mein Warenkorb wird gelöscht. Hat jemand Ideen? Auch wenn ich die js ändere, um sie ungültig zu machen, wird der Rubin ausgeführt. Kannst du das auch erklären?Ereignis-Listener zu Stripe hinzufügen Schaltfläche "JS"

Voll Seite geladen:

<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> 

Edit: Was ich tun am Ende wird nur eine neue Sicht Seite für den Wagen zu schaffen, da Ruby-Server-Seite geladen wird und somit nicht gut in js eingebettet spielt.

+0

Wie die Interpolation ausgewertet wird? Was ist im aktuellen HTML-Code beim Laden der Seite? –

+0

Wie kann das Hinzufügen eines Ereignis-Listeners zum Button etwas damit zu tun haben, dass der Warenkorb beim Aktualisieren auf dem Server gelöscht wird? Das klingt wie ein [XY Problem] (https://meta.stackexchange.com/questions/66377/what-is-the-xy-problem) – charlietfl

+0

@aluan Ich habe die vollständige Datei – user7811328

Antwort

1

Rubin läuft auf dem Server .... nicht in Browser ...... Javascript ist das Gegenteil

Ihr Problem ist, dass <%= @shopping_cart.clear %> jedes Mal auf dem Server ausgeführt wird ... nicht, wenn Ereignis ausgelöst wird in Browser.

ich würde Sie Ajax vorschlagen verwenden, um etwas an den Server zu senden und dann klare Wagen in diesem Antrag entsprechend

Verwandte Themen