自定义条带付款表单的问题

时间:2014-05-14 05:33:22

标签: javascript ruby-on-rails ruby-on-rails-4 token stripe-payments

为长期问题提前道歉。我是Rails和Stacked Overflow的新手,我遇到了路障。

我通过付款控制器在我的应用中处理条纹付款。 localhost:3000/payments/new效果很好,但现在我需要在我的应用预订应用中扩展它。

目前,当用户在场地找到他们喜欢的桌子时,他们可以进行预订。我通过将预订/新表格复制到我的表格显示页面中的特定表格

来完成此操作

表/显示:

<%= render :partial=>'new_reservation', :locals=> {:reservation => Reservation.new(:table_id=> @table.id)} %>

以下代码为partial:

<%= form_for(reservation) do |f| %>
  <% if reservation.errors.any? %>
    <div id="error_explanation">
      <h2><%= pluralize(reservation.errors.count, "error") %> prohibited this reservation from being saved:</h2>

      <ul>
      <% reservation.errors.full_messages.each do |msg| %>
        <li><%= msg %></li>
      <% end %>
      </ul>
    </div>
  <% end %>
  <div class="field">
    <%= f.label :user_id %><br>
    <%= f.number_field :user_id %>
  </div>
  <div class="field">
    <%= f.label :table_id %><br>
    <%= f.number_field :table_id %>
  </div>
  <div class="field">
    <%= f.label :reservation_date %><br>
    <%= f.date_field :reservation_date %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

现在我想将我的付款/新文件中的以下代码添加到此部分以将条带集成到新的预订流程中:

<div id="new_card">
    <div class="field">
      <%= f.hidden_field :stripe_token %>
    </div>
    <div class="field">
      <label>Card Number</label>
      <input id="card-number" type="text" placeholder="4242 4242 4242 4242" />
    </div>
    <div class="field">
      <label>CV Code</label>
      <input id="cvc" type="text" placeholder="123" />
    </div>
    <div class="field">
      <label>Expiry Month</label>
      <input id="exp-month" type="text" placeholder="12" />
    </div>
    <div class="field">
      <label>Expiry Year</label>
      <input id="exp-year" type="text" placeholder="14" />
    </div>
  </div>
  <div class="field">
    <%= f.label :amount %><br />
    <%= f.text_field :amount %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>

我已将我的reservation.js的javascript更新为以下内容:

$( function() {
    $('#card-number').reservation'formatCardNumber')
    $('#cvc').reservation('formatCardCVC')
    $('#exp-month, #exp-year').reservation('restrictNumeric')

    $(document).on('click', "#new_reservation [name='commit']", function( event ) {
        if( $('input[name=saved_card]:checked').val() !== 'true' ) {
        event.preventDefault()
            var card = {
                number:   $("#card-number").val(),
                expMonth: $("#exp-month").val(),
                expYear:  $("#exp-year").val(),
                cvc:      $("#cvc").val()
            }

            Stripe.createToken(card, function( status, response ) {
                if (status === 200) {
                    $("[name='reservation[stripe_token]']").val(response.id)
                    $("#new_reservation").submit()
                } else {
                    $("#stripe-error-message").text(response.error.message)
                    $("#credit-card-errors").show()
                    $("#user_submit").attr("disabled", false)
                }
            } )
        }
    } )

    $("[name='saved_card']").change( function() {
        showSaved = $(this).val() === 'true'
        $('#saved_card').toggle( showSaved )
        $('#new_card').toggle( ! showSaved )
    } )
    $("[name='saved_card']").eq(0).prop( 'checked', true ).change()
} )

唯一的问题是这些付款没有显示在我的条带仪表板上,stripe_token也没有通过隐藏字段传递给reservations.stripe_token。但是,我没有收到错误,预订显示为完整。

我已经在我的应用程序标题中加载了正确的js,当我使用payment / new时,条带工作。不知道为什么当我复制代码失败时。

我应该从另一个角度解决问题吗?

0 个答案:

没有答案