我使用will_paginate作为联系人节目视图中的嵌套音符。联系人控制器如下所示:
@contact = Contact.find(params[:id], :include => :notes)
@notes = @contact.notes.paginate(:page => params[:page], :per_page => 5, :order => "created_at ASC")
联系人展示视图包含<%= will_paginate @notes %>
标记。这是有效的,但排序顺序不正确,它显示所有6个音符而不是5个,顶部的分页是相反的,它是“next,2,1,previous”而不是“previous,1,2,next” ???
答案 0 :(得分:3)
您是否尝试将订单移至范围内?
您可以在模型中使用范围,例如
scope :order_by, lambda { |o| { :order => o } }
然后将您的分页行写为
@notes = @contact.notes.order_by("created_at ASC").paginate(:page => params[:page], :per_page => 5)
答案 1 :(得分:0)
我的第一个想法是:include => :notes
可能会混淆will_paginate。你试过把它留下来吗?
答案 2 :(得分:0)
你可以这样做:
@notes = @contact.notes.paginate(:page => params[:page], :per_page => 5, :order => "notes.created_at ASC")
class Contact < ActiveRecord::Base
has_many :notes,:order => "...." #remove this order option if you did
end
class Note < ActiveRecord::Base
default_scope :order => "..." # remove this order option if you did
end
答案 3 :(得分:0)
您向paginate方法提供了:order => "created_at ASC"
,而不是您希望以某种方式排序的活动对象。我找不到will_paginate
宝石中的确切点,
但我敢打赌,视图助手方法will_paginate
检查顺序,看它是从左到右,从右到左。
修改版本的Simmo回答Dan Seavers的建议应该是正确的:
@notes = @contact.notes.order("created_at ASC").paginate(:page => params[:page], :per_page => 5)
答案 4 :(得分:0)
多么愚蠢!!终于找到了问题,元素有一个“浮动:正确”,这样就导致了相反的顺序......