我正在使用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创建的数组以及表单数据。
答案 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});
在最后一种方式中,您需要解码服务器端的作业参数,以便提取**好处“数组。