рельсы и jquery сортируемые

Я пытаюсь реализовать хороший графический интерфейс для организации сообщений. я хочу использовать сортировку пользовательского интерфейса jQuery, чтобы пользователь мог перетаскивать. у меня есть столбец для каждого сообщения в моей базе данных «порядок отображения», по которому я сортирую

как я могу эффективно перевести то, что jquery делает со столбцами display_order в моей базе данных?


person sethvargo    schedule 05.01.2011    source источник


Ответы (1)


Один шаг за все время

  1. Прикрепите обработчик onchange к сортируемому пользовательскому интерфейсу.
  2. Каждый раз, когда порядок меняется, перебирайте элементы и пересчитывайте их позиции.
  3. Сохраните новые данные о местоположении с помощью ajax-запроса или добавьте кнопку «Сохранить», чтобы пользователь мог сделать это позже.

редактировать
но как мне также получить уникальные идентификаторы
См. № 2.

var rank = 1;
$('.my-element').each(function() {
    $(this).find('input.rank').val(rank++);
});

Что касается «дорого», то это ваш выбор. Вы можете добавить кнопку «сохранить», как я уже отмечал выше.

person Nikita Rybak    schedule 05.01.2011
comment
хотя это дорогая операция. и как мне отслеживать, где какая запись. .serialize() возвращает только их новые заказы, но как мне также получить уникальные идентификаторы, чтобы я мог обновить запись БД. id хотел бы сделать это AJAXy, но это дорогостоящая операция (2 обновления) каждый раз, когда пользователь выполняет удаление - это может вызвать большую нагрузку на сервер - person sethvargo; 05.01.2011
comment
@ set.vargo, если вы уже внедрили сортировку, но она слишком медленная, чтобы ее можно было использовать, то это одно дело. Но пока у вас не будет работающей реализации, я бы посоветовал не беспокоиться о производительности. В прошлом я снова и снова обжигался из-за таких чрезмерных размышлений, поэтому просто хотел предложить вам не беспокоиться о производительности, пока производительность не станет проблемой ;-) Кроме того, вы всегда можете выполнить рефакторинг путем разбиения на страницы или использования другой сортировки. алгоритм или что-то еще, если он слишком медленный или вызывает слишком большой трафик сервера. - person Upgradingdave; 05.01.2011