Как использовать AJAX для отправки обеих форм ... мои попытки пока не работают? - PullRequest
0 голосов
/ 29 октября 2018

Я хочу отправить 2 формы одну за другой на одной кнопке отправки.

Я использую форму для отправки информации о заказе, которая дает указания человеку - вот почему мне нужны формы, а также платеж, чтобы согласиться с ним.

Кстати, платежная система Stripe Elements.

Вот форма:

  <form id="form-element" action="/charges" method="post" id="payment_form">

<%= form_for([@listing, @order], html: {id: "Orders"}) do |form| %>
<div class="form-group">
    <%= form.label :name %>
    <%= form.text_field :name, class: "form-control" %>
  </div>
  <script

    src="https://js.stripe.com/v3/">

  </script>

    <div class="form-row">
      <label for="card-element">
        Credit or debit card
      </label>
      <div id="card-element" class="form-control">
        <!-- a Stripe Element will be inserted here. -->
      </div>

      <!-- Used to display form errors -->
      <div id="card-errors" role="alert"></div>
    </div>
      <br>
      <div class="form-group">

    <%= form.submit "asdf", class:"ripple-effect", id:"button-element" %>
  </div>

  <span class="token"></span>
  </form>
  <% end %>
  </div>
  <script>

...

      $('#Orders').on('submit', function(event) {
      event.preventDefault();
      $.ajax({
          type: "POST",
          url: "/charges",
          data: $('#payment_form').serialize()
      }).then(this.submit.bind(this));
  });

</script>

Я не уверен, что у меня правильный AJAX. Я хочу, чтобы после отправки платежа я ПОЛУЧИЛ информацию для заказа.

Когда у меня есть:

за пределами <% = form_for ..%> он отправляет токен в Stripe. Когда внутри, информация о заказе отправляется.

Я попытался поместить метод create из моего OrdersController (для создания заказов) в мои ChargesControllers (контроллер начислений для Stripe Elements), но он не будет работать из-за того, что «не может найти листинг без ID». Мои единственные мысли - отправить две формы вместе.

Как я могу 1, настроить JavaScript AJAX для отправки форм вместе ... 2 правильно настроить представление для него?

Вот что CMD отображает после отправки, когда действие сборов находится за пределами form_for ..

Started POST "/charges" for 127.0.0.1 at 2018-10-29 03:33:38 -0400
Processing by ChargesController#create as HTML
  Parameters: {"utf8"=>"✓", "authenticity_token"=>"V1JodRc0eg2JOV09876541234567i+pK8Mh6ofF1AeRM6Ha0SZ3C2UnjKUaWHNuoAddX+gTmQ==", "order"=>{"name"=>"as"}, "commit"=>"asdf"}
  Rendering charges/create.html.erb within layouts/charges
  Rendered charges/create.html.erb within layouts/charges (0.4ms)
Completed 200 OK in 1265ms (Views: 3.5ms | ActiveRecord: 0.0ms)

Данные для формы заказов обрабатываются, но не попадают в нужное место.

И это даже хороший курс действий, должен ли я пойти по-другому?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...