Ошибка драгоценного камня Will_Paginate неопределенный метод "total_pages"

Гем will_paginate не работает после того, как я изменил запрос, чтобы получить последователей /follow_users

Как я могу использовать will_paginate с этим??

@users = @user.reverse_relationships.order("created_at DESC").collect { |r| User.find(r.follower) }

Я пробовал несколько вариантов, таких как:

@users = @user.reverse_relationships.order("created_at DESC").collect { |r| User.find(r.follower) }
@users = @users.paginate(:page => params[:page])

@users = @user.reverse_relationships.paginate(:page => params[:page]).order("created_at DESC").collect { |r| User.find(r.follower) }

Каждый раз, когда я получаю ошибку, как undefined method "total_pages" или же undefined method "paginate"

1 ответ

Вы должны изменить порядок запроса, чтобы вы могли позвонить paginate а также total_pages в экземпляре ActiveRecord::Relation, как того требует will_paginate.

Это позволит удалить collect который эффективно превращает ваше отношение в массив.

Это может быть сделано с чем-то вроде:

@relationships = @user.reverse_relationships.includes(:follower).order("created_at DESC")

А затем просто получить доступ к последователю каждого отношения по вашему мнению или еще много чего.

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

Другие вопросы по тегам