Как отсортировать список с помощью Angular Sortable и Rails

Я застрял с этой проблемой. Я создал 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 что соответствует положение элемента, который я переместил в массиве, но он не показывает положение всех элементов в массиве, поэтому я не знаю, как использовать свойства этих значений для обновления объекта в базе данных.


person WagnerMatosUK    schedule 19.07.2016    source источник
comment
Вы используете Rails 5, верно?   -  person mahatmanich    schedule 19.07.2016
comment
К сожалению, нет (проект начался до выпуска Rails 5), поэтому мы используем Rails 4 и удалили все представления и т. д.   -  person WagnerMatosUK    schedule 19.07.2016
comment
Что действительно помогло бы, так это какой-то результат, который вы ожидаете, и вывод, который в настоящее время нежелателен ... Какую базу данных вы используете?   -  person mahatmanich    schedule 19.07.2016


Ответы (1)


Для всех, кому это может быть интересно: в конце я использовал следующее решение:

Каждый раз, когда Sortable обновляет элемент, он также отправляет массив со всеми элементами в нем в правильном порядке. Затем я просмотрел массив и обновил каждый элемент новым порядком. Не уверен, что это самый эффективный способ сделать это, но на данный момент он решил проблему.

person WagnerMatosUK    schedule 26.07.2016