I'm looking to do pagination with cancan however it's not obvious how to integrate this with gems such as will_paginate.
Ideally cancan's load_resource will delegate to will_paginate and add extra conditions. For example in cancan I've declared guest users
can :read, Post, :published => true
and this is handled automatically by load_resource. However I'd then like to have will_paginate page through all these results.
Any ideas.
Regards
Brad
This is simple to do with kaminari https://github.com/amatsuda/kaminari
in my PostsController I just do
before_filter :load_by_pagination, :only => :index
def load_by_pagination
@posts = Post.accessible_by(current_ability).order("published_date desc").page params[:page]
end
Note that kaminari works properly with the new rails3 ActiveRelation framework so it's possible to chain methods together to build up scope. And as CanCan is also ActiveRelation friendly they both just chain together.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With