kaminari和order_by

所以我列出了我网站的所有成员,并按名称对它们进行分组,以便更好地组织列表。 因此,在我看来,我的所有成员都按其成员名称的第一个字母分组,如:

B Bakedfish Beercan Dan Bigmike33x C Cynicalassassin ect.. 

无论如何,我也想对这个列表进行分页,但是我不能将Kaminari的分页参数添加到我的控制器中,如果我使用命令,因为我得到一个未定义的方法错误。

所以这不起作用:

 @members = Member.all.group_by{|u| u.fullname[0].titleize}.page(params[:page]).per(18) 

我的观点看起来像这样:

 

:browse, :controller =>:members, :letter => starting_letter } %>

  1. "artist" %>

这是我的错误消息:

 NoMethodError (undefined method `page' for #): app/controllers/members_controller.rb:10:in `index' 

Kaminari将page方法添加到ActiveRecord::RelationMember.all.group_by返回哈希。 这就是你得到这个例外的原因。

我建议在分页后进行分组,例如:

 @members = Member.order(:full_name).page(params[:page]).per(18).to_a.group_by { |u| u.fullname[0].upcase } 

UPDATE

为了使用paginate helper,您可以分配2个变量,例如:

 @paginated_members = Member.order(:full_name).page(params[:page]).per(18) @members = @paginated_members.to_a.group_by { |u| u.fullname[0].upcase } 

并将@paginated_members传递给paginate帮助器。