Задать вопрос

Как отправить POST запрос при сортировке элементов на странице (Nestable)?

Rails 4.1.1
Nestable

При перетаскивании элементов в методе sort падает ошибка "undefined method `each_with_index` for nil:NilClass"

js
$('.dd').nestable('serialize');
$('.dd').on('change', function() {
	$.post(
		$(this).data('update-url'),
		$(this).nestable('serialize')
		)
});


view
.dd data-update-url="#{sort_admin_list_pages_path(@list)}"
	ol.dd-list
		- @list.pages.order('position').each do |page|
			li.dd-item data-id="#{page.id}"
				.dd-handle = page.name


method
def sort
	params[:pages].each_with_index do |id, index|
		Page.where(id: id).update_all({position: index+1})
	end
	render nothing: true
end
  • Вопрос задан
  • 2902 просмотра
Подписаться 3 Оценить 2 комментария
Ответ пользователя Dimitriy К ответам на вопрос (2)
Vakiliy
@Vakiliy
Данные которые отправляются, не содержат параметры pages.

Cогласно документации .nestable('serialize'); идет отправка атрибутов data-*, у вас data-id, т.е. отправляется в виде (с оф. док.) [{"id":1},{"id":2},{"id":3,"children":[{"id":4},{"id":5}]}]

А принимаете почему-то вы pages:
params[:pages].each_with_index
Соответственно получаете ошибку, что для NilClass нет метода each_with_index.
Решение: или отправлять data-pages, или принимать :id
Ответ написан