1
私はjQueryを使用しています。Trelloのようなリスト間でカードをドラッグするためにソートできます。ユーザーがカードとやり取りを終えたら、そのカードのすべてのカードを保存する必要があります。1回のAJAXリクエストと同時に複数のレコードを保存しますか?
私は現在、ループごとにそのタイプのすべてのアイテムをループし、それぞれをAJAXリクエストで保存しています。
ui.item.parent('.js-CardsContainer').children('.js-CardContainer').each(function() {
var list_id = $(this).closest('.js-List').data('id');
var order = $(this).index();
var id = $(this).find('.js-Card').data('id');
console.log(order);
$.ajax({
url: "/cards/" + id,
type: "PATCH",
data: {
card: {
list_id: list_id,
order: order
}
},
success: function(resp) {
//
}
});
});
カード数枚のリストではうまくいくようです。しかし、5枚以上のカードが保存されると、そのうちのいくつかが失敗します。 AJAXのリクエストがカードごとに使用されているからです。
だから、すべてのAJAXリクエストを1つのリクエストにまとめる必要があると思いますか?私はそれをどうやって行うのか分かりません。誰も助けることができますか?
これは、あなたがこのようなcard
オブジェクトの配列でdata
を提供するようにあなたのロジックを変更することができ、この
def update
@card = Card.find(params[:id])
if @card.update_attributes(shared_params)
respond_to do |format|
format.js {}
format.json { render json: @card, status: :created, location: @card }
end
else
render :edit
end
end
URLは "/ cards /" + idの代わりに "/ cards"ですか? – colmtuite
はい - それはより正確でしょう。私は答えを更新しました。 –
Roryさん、サーバー側のロジックをどのように更新できるかご存知ですか?私はRailsを使用していますが、質問にコントローラロジックを追加しました。 – colmtuite