Я застрял с этой проблемой. Я создал API на Rails и клиент на Angular. У меня есть модель Todo
, у которой есть свойство order
. Когда я создаю новую задачу, я автоматически присваиваю вновь созданной задаче следующий порядок значений:
@todo = Todo.create(todo_params)
@todo.order = Todo.count + 1
И чтобы отобразить все задачи:
@todos = Todo.where(...).order(:order.desc)
В моем клиенте я использую Sortable для управления пользовательским интерфейсом, и есть метод onUpdate
, который дает мне новый индексы для массива.
Проблема, с которой я сталкиваюсь, заключается в том, что индексы значительно отличаются от значения, которое у меня есть в свойстве order
. Когда вызывается вышеупомянутая функция, я получаю элемент и еще два значения: newIndex
и oldIndex
, но проблема в том, что это не дает мне индекс других задач, так как я могу реорганизовать это в базе данных?
Я был бы признателен за любую помощь, поскольку я немного в растерянности здесь.
PS: обратите внимание, что это только Rails API, поэтому без просмотров.
ИЗМЕНИТЬ
Требуется результат:
Давайте представим это: у меня есть три элемента в базе данных: {name: A, order: 1}, {name: B, order: 2}, {name: C, order: 3}
. Во внешнем интерфейсе при использовании ng-repeat каждый элемент будет иметь $index
. Скажем в качестве аргумента, что A будет иметь $index
значение 0, B 1, C 2. На данный момент, когда я использую библиотеку Angular Sortable, когда я вручную сортирую список, я получаю значения: oldIndex
и newIndex
что соответствует положение элемента, который я переместил в массиве, но он не показывает положение всех элементов в массиве, поэтому я не знаю, как использовать свойства этих значений для обновления объекта в базе данных.