根据下拉选择动态获取值

时间:2017-09-20 01:51:15

标签: javascript jquery ruby-on-rails

我有一个带有下拉菜单的表单,允许用户选择他们想要预订商品的数量。我让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”时,它应该动态地返回length1

@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知之甚少。谢谢。

编辑: 我仍然无法解决这个问题。

1 个答案:

答案 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)
})