Ruby on rails Rails条带付款和使用1提交的表单

Ruby on rails Rails条带付款和使用1提交的表单,ruby-on-rails,forms,stripe-payments,ruby-on-rails-4.2,Ruby On Rails,Forms,Stripe Payments,Ruby On Rails 4.2,我的问题很类似于。我尝试了在那里接受的解决方案,但对我无效 我使用的是Rails 4.2,Stripe集成已经实现,我在Stripe支付页面的同一页面中添加了一个调查表单。如果使用“部分”菜单中的“提交”按钮,调查表单将正确显示并保存。但是,如果表单和信用卡付款有效,我正在尝试使用条带付款页面上的onesubmit按钮提交表单(创建并保存) 看起来条纹付款表是通过js提交的 payments/partials/_ticket_payment_panel.html <form action=

我的问题很类似于。我尝试了在那里接受的解决方案,但对我无效

我使用的是Rails 4.2,Stripe集成已经实现,我在Stripe支付页面的同一页面中添加了一个
调查
表单。如果使用“部分”菜单中的“提交”按钮,调查表单将正确显示并保存。但是,如果表单和信用卡付款有效,我正在尝试使用条带付款页面上的onesubmit按钮提交表单(创建并保存)

看起来条纹付款表是通过js提交的

payments/partials/_ticket_payment_panel.html

<form action='/payments/pay_for/receive_payments' id="ticket-form" method="POST">
  // form fields 
</form>


<% content_for :scripts do %>

  <script type="text/javascript" charset="utf-8">
    $(function () {
        var $form = $('#ticket-form');
        //var $survey = $('#survey-form');
        $form.submit(function (event) {
            // Disable the submit button to prevent repeated clicks:
            $form.find('.submit').prop('disabled', true);
            // Request a token from Stripe:
            Stripe.card.createToken($form, stripeResponseHandler);
            // Prevent the form from being submitted:
            return false;
        });
    });

    function stripeResponseHandler(status, response) {
        var $form = $('#ticket-form');
        if (response.error) {
            // Show the errors on the form
            $('.submit').removeProp('disabled');
        } else {
            // response contains id and card, which contains additional card details
            var token = response.id;
            // Insert the token into the form so it gets submitted to the server
            //execute this block only if plan exists -> helpers/payments/application_helper.rb

            $form.get(0).submit();
        }
    }
  </script>

<% end %>
这是我的调查表

<%= bootstrap_form_for(@survey, :html => { :id => "survey-form" } ) do |f| %>

  //form fields 
  <%= f.submit "Apply", class: 'action-btn btn-rounded btn-large' %>

<% end %>
{:id=>“调查表”})do | f |%>
//表单字段
目前,他们单独提交/保存正确,因此我认为模型和控制器之间的链接很好。但我似乎无法修改js代码或控制器来保存调查表单和条带付款

以下粗略的逻辑解释了单个提交的解决方案

假设在两个表单(Stripe、survey)准备就绪时调用Stripe请求。然后,您需要在从Stripe成功获取
令牌
后发出AJAX请求(调查后数据),然后Stripe表单提交

function stripeResponseHandler(status, response) {
        var $form = $('#ticket-form');
        if (response.error) {
            $('.submit').removeProp('disabled');
        } else {
            var token = response.id;
            //here is the ajax call to submit survey
            $.ajax({
              type: "POST",
              url: "url/of/your/survey/form/post",
              data: "{empid: " + empid + "}",
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function(result){
                   //submit stripe form only if the survey data saved
                   $form.get(0).submit();
              },
              error: function(){
                   //handle error situation if post request failed
              }
            });
        }
    }
以下粗略的逻辑解释了单个提交的解决方案

假设在两个表单(Stripe、survey)准备就绪时调用Stripe请求。然后,您需要在从Stripe成功获取
令牌
后发出AJAX请求(调查后数据),然后Stripe表单提交

function stripeResponseHandler(status, response) {
        var $form = $('#ticket-form');
        if (response.error) {
            $('.submit').removeProp('disabled');
        } else {
            var token = response.id;
            //here is the ajax call to submit survey
            $.ajax({
              type: "POST",
              url: "url/of/your/survey/form/post",
              data: "{empid: " + empid + "}",
              contentType: "application/json; charset=utf-8",
              dataType: "json",
              success: function(result){
                   //submit stripe form only if the survey data saved
                   $form.get(0).submit();
              },
              error: function(){
                   //handle error situation if post request failed
              }
            });
        }
    }

这些表单是完全独立的还是一个表单在另一个表单中?这些表单是完全独立的。但两个表单都在同一个页面中呈现。您不能从一个请求提交两个不同的表单。你可以用两种方法解决这个问题。1.将两种形式合并为单一形式,2。通过AJAX调用保存
调查
表单数据,并在收到AJAX调用的响应后提交条带表单。1。如果我将两个表单合并为一个表单,那么我将无法将某些字段保存到
survey
表,并将信用卡信息保存到
Ticket
表?2.我会试试这个建议,这是否意味着有两个按钮?一个是通过AJAX提交
调查
表单数据。然后在成功的
调查后显示条带表单
表单提交和提交条带表单?@tshckr为单个表单提交提供了解决方案逻辑这些表单彼此完全分离还是一个表单在另一个表单中?表单彼此完全分离。但两个表单都在同一个页面中呈现。您不能从一个请求提交两个不同的表单。你可以用两种方法解决这个问题。1.将两种形式合并为单一形式,2。通过AJAX调用保存
调查
表单数据,并在收到AJAX调用的响应后提交条带表单。1。如果我将两个表单合并为一个表单,那么我将无法将某些字段保存到
survey
表,并将信用卡信息保存到
Ticket
表?2.我会试试这个建议,这是否意味着有两个按钮?一个是通过AJAX提交
调查
表单数据。然后在成功
调查后显示条带表单
表单提交并提交条带表单?@tshckr为单表单提交提供了解决方案逻辑