Sagen wir, wir haben mehrere Listen von Elementen.Aktualisieren Sie ein Array von Datensätzen mit Rails und Ajax
<ul data-id="2">
<li>
<span>Item name</span>
</li>
<li>
<span>Item name</span>
</li>
<li>
<span>Item name</span>
</li>
</ul>
Jedes Element hat ein list_id
Attribut, das die ID der Liste ist derzeit der Artikel gehört und ein order
Attribut, das der aktuelle Position in der Liste des Artikels ist. Wenn ein bestimmtes Ereignis auftritt, möchten wir jedes Element in dieser Liste finden und seine list_id
und order
Parameter aktualisieren.
Hier ist, was ich bisher
$('li').sortable({
update: function(event, ui) {
if (this === ui.item.parent()[0]) {
var cards = ui.item.parent('ul li').map(function() {
return {
list_id: $(this).closest('ul').data('id'),
order: $(this).index(),
}
}).get();
$.ajax({
url: "/cards/",
type: "PATCH",
dataType: "json",
data: { cards: cards },
success: function(resp){
console.log('Yay');
}
});
}
}
});
Ich habe Probleme, die Karten-Array ausgibt überall. Wenn ich rufe console.log(cards);
Ich bekomme nur []
ohne Daten, die ich verstehen kann. Meine Rails-Konsole scheint auch keine Parameter-Arrays auszugeben.
Das Ziel ist es, alle Karten in der Liste zu meinem Schienen-Controller zu senden und sie alle gleichzeitig zu aktualisieren.
Bitte füllen Sie das Skript. –
Fügen Sie die gesamten Daten hinzu, woher kommt 'ui'? –
Sorry, ich habe die Frage aktualisiert. Ich verwende jQuery Sortierbar, um die Listenelemente zu ziehen. Die Aktualisierungsfunktion wird aufgerufen, wenn ein Listenelement freigegeben wird. – colmtuite