将分页 (3.0.3) 不适用于继承的资源 (1.3.1)。在我的 Controller 中:
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>
最佳答案
这有点遥远,但我遇到了这个问题,结果发现它是 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
我希望对某人有所帮助。
关于ruby-on-rails - will_paginate和inherited_resources不能一起工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10304182/