RoR:使用Jquery AJAX发送附加数据以进行提交

时间:2018-02-05 17:52:15

标签: javascript jquery ruby-on-rails ajax forms

我正在使用rails表单,我需要将在Jquery中创建的数组发送到我的rails控制器。我很难以正确的格式获取数据。

我设法让Jquery数组在更新此模型时通过AJAX发送。它发送普通PATCH和数组参数的附加PATCH。所以2更新。一切都可以找到更新,它有点hacky但是做我需要它。

这不能用于创建,因为我无法发送两个POST请求来创建同一个对象吗?这有意义吗?

所以我想我的问题是如何将我的AJAX数据与正常表单提交一起标记?

这里

    $('#employer_job_submit_button').on('click',function(){
      $.ajax({
        url:"/jobs/<%= @job.id %>",
        type:'PATCH',
        dataType:'json',
        data:{
          job: {
            benefits: tags_array
          }
        }
    });
  });

这是我的观点(部分内容)

<%= form_for @job, :html => {:class => 'profile_form'} do |f| %>
.....
<div>
    <%= f.submit "Post Job", class: "btn btn-primary btn-block", id: "employer_job_submit_button" %></div>
</div>

<% end %>

我尝试了单独的代码来创建新的工作。像这样:

$('#employer_job_submit_button').on('click',function(e){
      e.preventDefault();
      var form_data = $('form').serialize()
      $.ajax({
        url:"/jobs",
        type:'POST',
        dataType:'json',
          data:{
      job: form_data
    }
});

});

通过AJAX发送我的所有表单数据,但我无法弄清楚如何添加&#34;好处&#34;数组到表单数据。这也不是我想要做的,因为它绕过了标准的Rails表单。

我只想添加我的Jquery创建的数组以及表单数据。

1 个答案:

答案 0 :(得分:0)

  

通过AJAX发送我的所有表单数据,但我无法弄清楚如何将“Benefits”数组添加到表单数据中。

您只需将字符串化数组版本添加到数据中即可。

自:

dataType:'json',
      data:{
        job: form_data
   }

要:

data: {
      job: form_data,
      benefits: JSON.stringify(tags_array)
}

通过这种方式,您将在服务器上收到两个变量,如下例所示:

job:firstname=Mickey&lastname=Mouse
benefits:["Saab","Volvo","BMW"]

相反,如果您想继续添加序列化表单数据,您可以使用jquery param,如下所示:

var form_data = $('form').serialize() + '&' + $.param({"benefits": tags_array});

在最后一种方式中,您需要解码服务器端的作业参数,以便提取**好处“数组。