Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 将分页gem错误未定义方法“总页数”_Ruby On Rails_Ruby On Rails 4_Will Paginate - Fatal编程技术网

Ruby on rails 将分页gem错误未定义方法“总页数”

Ruby on rails 将分页gem错误未定义方法“总页数”,ruby-on-rails,ruby-on-rails-4,will-paginate,Ruby On Rails,Ruby On Rails 4,Will Paginate,在我更改查询以获取关注者/关注用户后,will_paginate gem不起作用 我如何使用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 {

在我更改查询以获取关注者/关注用户后,will_paginate gem不起作用

我如何使用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) }

每次我遇到一个错误,如未定义的方法total_pages或未定义的方法paginate,您应该重新排序查询,以便可以调用ActiveRecord::Relation实例上的paginate和total_pages,正如paginate所需

这将删除collect,它有效地将您的关系转换为数组

这可以通过以下方式实现:

@relationships = @user.reverse_relationships.includes(:follower).order("created_at DESC")
然后在你的观点或诸如此类的观点中访问每种关系的追随者


这也将更加有效-您不会像原始代码那样为每个跟随者发出单独的查询。

可能是因为您的对象不再是ActiveRecord::Relation,而这正是分页挂起的原因。另外,在订购之前分页有点愚蠢。你为什么要收集,为什么你的关联结构不正确?正如你在那篇文章中看到的我的原始问题,我想获得一个用户的追随者和跟踪用户,并能够根据建立关系的时间对他们进行排序。我更喜欢只使用我的@users.followers和@users.followers\u用户,但这并没有将它们按创建关系的时间顺序排列。因此,我从另一篇文章中得到了答案,并想将其分页。如果有更好的答案,那么我很想知道。这给了我错误的参数类型符号预期Modulegack,我总是忘记它是包含还是包含。应该包括: