2015-07-24 3 views
0

Я пытаюсь создать форму для регистрации на встречи. Однако у каждой встречи другая цена (db: назначение принадлежит appt_type, цена принадлежит appt_type). Вот как мой collection_select настроен:Изменить значение заряда полосы в поле выбора перед отправкой (Rails)?

# @appointments = Appointment.all 
# form_for ... 
<div> 
    <%= f.label "Select Date" %> 
    <%= f.collection_select(:appointment_id, @appointments, :id, :formated_date, :class => 'select_class')%> 
</div> 

Вот как моя форма полосы устанавливается:

<%= form_tag charges_path do %> 
    <script src="https://checkout.stripe.com/checkout.js" class="stripe-button" 
    data-key="<%= Rails.configuration.stripe[:publishable_key] %>" 
    data-description= Description 
    data-amount= ????? 
    </script> 
<% end %> 

Я хотел бы изменить значение данных-суммы, чтобы отразить цену выбранного назначение в collection_select. Кажется, что это нужно делать динамично, но я не уверен, как это сделать. Любая помощь очень ценится!

ответ

0

Вы не можете динамически изменять цену Оформить покупку при использовании этой формы. Вместо этого вам нужно использовать Custom Checkout, чтобы установить цену в Javascript. Идея здесь заключается в том, что у вас есть собственная кнопка для открытия Checkout в вашей форме. Затем в обработчике кликов вы вызываете handler.open() с необходимыми параметрами, включая цену, которую вы рассчитали, исходя из выбора клиента в раскрывающемся списке.

Вы можете увидеть рабочую демонстрацию этого в jsfiddle, но вот то, что ваш код будет выглядеть следующим образом:

var handler = StripeCheckout.configure({ 
    key: 'pk_test_6pRNASCoBOKtIshFeQd4XMUh', 
    image: '/square-image.png', 
    token: function(token) { 
     $("#stripeToken").val(token.id); 
     $("#stripeEmail").val(token.email); 
     $("#myForm").submit(); 
    } 
    }); 

    $('#customButton').on('click', function(e) { 
    var amount = $("#amount").val() * 100; 
    // Open Checkout with further options 
    handler.open({ 
     name: 'Demo Site', 
     description: '2 widgets ($20.00)', 
     amount: amount 
    }); 
    e.preventDefault(); 
    }); 

    // Close Checkout on page navigation 
    $(window).on('popstate', function() { 
    handler.close(); 
    }); 
Смежные вопросы