Javascript で動的に生成されたいくつかのパラメーターを含む配列があります。いくつかのフィールドに入力して送信を押した後、フォームフィールドからのデータと配列からのデータ、つまり名前、配列[0];名前、配列[1];名前、配列[2]などを含むDBに複数のレコードを生成したい.だから私は次のことをすることに決めました:私の見解では(私は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"
]
]})
});
});
しかし、クロムデバッグでは、2つのPOSTリクエストが送信されているのがわかります(フォームからの/stoptimesと、コード422で応答を得た他の/stop_times.json)。
1 つの POST 要求だけであってはなりませんか? Javascript でフォームではなく POST を実行したい。複数のレコードを作成する他の (より明白な) 方法はありますか?
ありがとう、
ドミニク
ありがとう@UberNeet :)今では1つのレコードで動作します。コントローラーに渡され、正しいレコードが作成されます。配列全体を作成して JSON として渡すことはできますが、コントローラー側でそれを処理する方法がわかりません。いくつかのループが必要だと思いますが、params がどのように構築されているかわかりません。以下を追加しました:
@i = 0
while @i< params.length-1 do
@stop_time = StopTime.new(params[@i][:stop_time])
@i +=1
end