我正在尝试创建一个表单来注册约会。但是,每个约会都有不同的价格(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中所选约会的价格。似乎这必须动态完成,但我不知道如何去做。非常感谢任何帮助!
答案 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();
});