我有一个带有下拉菜单的表单,允许用户选择他们想要预订商品的数量。我让stripe
来处理付款。我希望根据选择动态检索length
。
<%= form_tag pages_next_url(@booking), :length => params[:length] do %>
<div class="input-field">
<!--<%= label :length, "How long will you stay?" %>-->
<%= select_tag "length", options_for_select(@garage_times.map { |obj| [obj['time'], obj['value']] }) %>
</div>
<%= hidden_field_tag :garageid, @garage.id %>
<script src="https://checkout.stripe.com/checkout.js" class="stripe-button"
data-key="<%= Rails.application.secrets.stripe_publishable_key %>"
data-description="Payment"
data-amount= <%= garage.weekday*100*length %> <-- need to get length (integer) dynamically
data-locale="auto"
data-email= <%= current_user.email %> ></script>
<% end %>
在我的控制器中,我列出了值。当选择“1:00”时,它应该动态地返回length
,1
。
@garage_times = [
{"value" => 1, "time" => "1:00 hour"},
{"value" => 2, "time" => "2:00 hours"},
{"value" => 3, "time" => "3:00 hours"},
{"value" => 4, "time" => "4:00 hours"}
]
我知道它需要AJAX / JS才能动态检索值。我做了一些研究并观察了Railscast的动态形式。但是,它对我的情况没有帮助。我见过的所有示例都是从model
检索值。此外,我知道如果我将计算放在控制器中就可以完成,但重点是允许用户在输入付款信息时查看付款按钮的总金额。
请指导我。我对JS和AJAX知之甚少。谢谢。
编辑: 我仍然无法解决这个问题。
答案 0 :(得分:1)
您似乎可以避免使用AJAX并使用选择列表value
。然后使用length
值更新按钮。
你可以在jQuery中做这样的事情:
$('#length').on('change', function() {
weekday_rate = $('#weekday_rate').html();
length = $(this).val();
$('.stripe-button').attr('data-amount', weekday_rate * 100 * length)
})