2

将分页 (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>
4

1 回答 1

3

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

查看: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

我希望这对某人有所帮助。

于 2012-09-17T21:31:22.350 回答