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 } %>
- "artist" %>
这是我的错误消息:
NoMethodError (undefined method `page' for #): app/controllers/members_controller.rb:10:in `index'
Kaminari将page
方法添加到ActiveRecord::Relation
但Member.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
帮助器。