在提交之前使用选择字段更改条带费用的值(Rails)?

时间:2015-07-24 01:11:42

标签: ruby-on-rails stripe-payments

我正在尝试创建一个表单来注册约会。但是,每个约会都有不同的价格(db:约会属于appt_type,价格属于appt_type)。以下是我的collection_select的设置方法:

# @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 %>

我希望更改data-amount的值以反映collection_select中所选约会的价格。似乎这必须动态完成,但我不知道如何去做。非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

使用此表单时,您无法动态更改Checkout的价格。相反,您需要使用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();
  });