will_paginate和inherited_resources不能一起工作

时间:2012-04-24 18:50:20

标签: ruby-on-rails will-paginate inherited-resources

paginate(3.0.3)是否不适用于继承的资源(1.3.1)。在我的控制器中:

protected
def collection
  @posts ||= end_of_association_chain.paginate(:page => params[:page])
end

我在初始化程序中添加了require'will_paginate / array',但这并不能解决问题。我怎样才能将分页和继承的资源放在一起?在我看来,我得到错误

undefined method `total_pages' for #<ActiveRecord::Relation:0x00000004312e38>

1 个答案:

答案 0 :(得分:3)

这是一个很长的镜头,但我遇到了这个问题,事实证明它是CanCan,我正在使用的另一个宝石。这是我偶然发现的第一件事,所以我觉得有一天它可能对某人有所帮助。

退房:https://github.com/ryanb/cancan/wiki/Inherited-Resources

load_and_authorize_resource的调用会加载集合,因此条件赋值的右侧永远不会在collection方法中运行。上面链接中描述的修复是跳过集合操作的授权,并在collection方法中明确地进行检查。

skip_load_and_authorize_resource :only => :index

protected

def collection
  @posts ||= end_of_association_chain.accessible_by(current_ability).paginate(:page => params[:page])
end

我希望能帮助别人。