我有一个数组,其中包含一些在 Javascript 中动态生成的参数。填写一些字段并按下提交后,我想在 DB 中生成多条记录,其中包含来自表单字段的数据 + 来自数组的数据,即 name,array[0];name,array[1];name,array[2] 等。所以我决定做以下事情:在我看来(我使用simpleform)
<%= simple_form_for(@stop_time, :html => {:remote => true, :class => 'well form-horizontal'}) do |f| %>
<%= f.input :stop_id %>
<%= f.button :submit %>
和脚本部分(我现在使用固定值):
<script type="text/javascript">
$('#new_stop_time').submit(function(){
$.ajax({
beforeSend: function(xhr) {
xhr.setRequestHeader(
'X-CSRF-Token',
$('meta[name="csrf-token"]').attr('content'))},
url: "/stop_times.json",
type: "POST",
contentType: "application/json",
data: JSON.stringify([
arrival_time:"04:40:00",
created_at:"2013-04-20T20:37:30Z",
departure_time:"04:40:00",
drop_off_type:0,
id:1881,
pickup_type:0,
shape_dist_traveled:null,
stop_headsign:null,
stop_id:84612,
stop_sequence:1,
trip_id:"ABCDE",
updated_at:"2013-04-20T20:37:30Z"
]
]})
});
});
但在 chrome 调试中,我看到发送了 2 个 POST 请求(一个来自表单的 /stoptimes 和其他 /stop_times.json 得到代码 422 的响应)。
不应该只是一个 POST 请求吗?我希望 Javascript 做 POST 而不是表单。有没有其他(更明显的)方法来创建多个记录?
谢谢,
多米尼克
谢谢@UberNeet :) 现在它适用于一条记录。它传递给控制器并创建正确的记录。我可以创建整个数组以将其作为 JSON 传递,但不确定如何在控制器端处理它。我假设需要一些循环,但我不知道参数是如何构建的。我添加了以下内容:
@i = 0
while @i< params.length-1 do
@stop_time = StopTime.new(params[@i][:stop_time])
@i +=1
end