2

Попытка сортировать запись по связанной области, к сожалению, при разбиении на страницы с помощью Paginate сортировка неправильная.Will_Paginate Gem With Rails Отображение результатов в неправильном порядке

@categories = Category.includes(:posts) 
.page(params[:page]) 
.order("posts.post_at DESC") 

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

Как я могу получить Paginate для уважения к заказу?

Конечная цель: Категории, отсортированные по posts.post_at и разбитые на страницы при сохранении этого порядка.

Спасибо.

+1

Вы пробовали обмен файлами '.page' и' .order'? В противном случае вы только сортируете текущую страницу. Итак: '@categories = Category.includes (: posts) .order (" posts.post_at DESC "). Page (params [: page])' – taglia

+0

Да, на самом деле это то, что я пробовал изначально, пока не прочитал сообщение «Переполнение стека» заявив, чтобы сделать это наоборот. Результат тот же - Категории не сортируются post_at. –

+0

Еще один вариант, который я на самом деле пробовал: 'category = Category.includes (: posts) .order (" posts.post_at DESC ") @categories = categories.page (params [: page])' Все еще имел тот же результат. –

ответ

0

Попробуйте

@categories = Category.includes(:posts).order("posts.post_at DESC").paginate(:page => params[:page], :per_page => 10) 
+0

Пробовал, к сожалению, такой же результат. Категории не упорядочиваются по атрибуту post_at. –

0

К сожалению, не могу комментировать из-за низкой репутации, но то, что вы пытаетесь сортировать и то, что вы хотите в списке?

Если вы хотите, чтобы категории в определенном порядке соответствовали сообщениям, то это по алфавиту?

@categories = Category.includes(:posts).order('categories.name??').page(params[:page])

Категория с большинством последних сообщений?

@categories = Category.includes(:posts).order("posts.post_at DESC").page(params[:page])

Или вы желая самые последние сообщения с категориями, перечисленными вместе с ним?

@posts = Post.includes(:category).order('posts.post_at DESC').page(params[:page])

Неясно, что ваша конечная цель с этим запросом.

+0

Привет, конечная цель - это категории, отсортированные по posts.post_at. Спасибо за ваш комментарий. Я обновлю оригинальный вопрос. –

+0

- это только последнее сообщение post_at? – bf34

+1

Да .. порядок сортировки отлично работает с '@categories = Category.includes (: posts) .order (" posts.post_at DESC ")', но с разбивкой на страницы порядок игнорируется. –

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