0

Я столкнулся с этой проблемой. Я построил API в Rails и клиент в Angular. У меня есть модель под названием Todo, которая имеет свойство order. Когда я создаю новый Todo, я автоматически присвоит вновь созданного TODO заказа значения следующим образом:Как отсортировать список, используя угловую сортировку и рельсы

@todo = Todo.create(todo_params) 
@todo.order = Todo.count + 1 

И показать все ToDos:

@todos = Todo.where(...).order(:order.desc) 

В моем клиенте я использую Sortable для UI, и есть метод под названием onUpdate, который дает мне новые индексы для массива.

Проблема, с которой я столкнулась, заключается в том, что индексы значительно отличаются от значения, которое у меня есть в свойстве order. Когда вызывается вышеупомянутая функция, я получаю элемент и еще два значения: newIndex и oldIndex, но проблема в том, что это не дает мне индекс других todos, так как я могу реорганизовать это в базе данных?

Буду признателен за любую помощь, поскольку я немного потерял здесь.

PS: Обратите внимание, что это только Rails API, поэтому нет представлений.

EDIT

Выходной хотел:

Давайте представим себе это: У меня есть три элемента в базе данных: {name: A, order: 1}, {name: B, order: 2}, {name: C, order: 3}. В интерфейсе, используя ng-repeat, каждый элемент будет иметь $index. Скажем, ради аргумента, что A будет иметь значение $index 0, B 1, C 2. В настоящий момент, когда я использую Угловую библиотеку Sortable, когда я вручную сортирую список, получаю значения: oldIndex и newIndex, что соответствует позиция элемента, который я переместил внутри массива, но он не показывает позицию всех элементов в массиве, поэтому я не знаю, как использовать свойства этих значений для обновления объекта в базе данных.

+0

Вы находитесь на Rails 5, затем справа? – mahatmanich

+1

К сожалению нет (проект был запущен до того, как был выпущен Rails 5), поэтому мы используем Rails 4 и удалили все виды и т. Д. – WagnerMatosUK

+0

Что действительно помогло бы - это какой-то вывод, который вы ожидаете, и вывод, который в настоящее время нежелателен. .. В какой базе данных вы используете? – mahatmanich

ответ

0

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

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

 Смежные вопросы

  • Нет связанных вопросов^_^