Rails 3 pagination, will_paginate vs. Kaminari

2019-03-11 14:41发布

问题:

My setup: Rails 3.0.9, Ruby 1.9.2

I'm looking into a pagination solution for my app and saw that there is a new-ish gem Kaminari compared to the trusty will_paginate. It looks like will_paginate wasn't updated for awhile but has since came back with V3.0. What's the consensus, is one preferred over the other and why? Thanks in advance for your insights.

EDIT

I asked Ryan Bates on Twitter and he said

Both do the job equally well. The biggest factor is if you use any gems which require pagination since they are incompatible. I do like will_paginate's non-engine approach a bit more, but that's a personal preference.

回答1:

Kaminari Rocks if you are using rails 3+ , I like to use it because

  1. It is latest library and supports rails 3+ powerfully.
  2. 'Kaminari' is Easy to use and it supports ajax very easily.
  3. Paginate pure Object way.
  4. It works as a proxy on AREL, no specific paginate method overloaded on ActiveRecord
  5. Does not pollute the Array or Hash object
  6. More standard rails support for other view formats, most important mobile

    User.page(7).per(50)
    

    But if you are using rails 2.3 etc. keep stick with will_paginate that also works with rails 3 +, but internally its not such perfect as Kaminari code.



回答2:

I really like Kaminari. I don't know if will_paginate does this, but Kaminari also can paginate any regular old Array:

Kaminari.paginate_array(an_array).page params[:page]

There are Railscasts for both, which I recommend watching.



回答3:

watch the kaminari railscast an then watch the will paginate railscast

Ryan Bates advises in the comments that Kaminari makes heavier use of partials, which might make it fractionally slower, but not much



回答4:

I have used both Gems, and frankly, I like Kaminari better. It's so easy to use. I haven't seen any performance issues or environment issues (my app lives on Heroku).



回答5:

While will_paginate does the job pretty quickly, Kaminari also allow you to quickly edit the pagination HTML output.

This was a great thing for me, since i am using Bootstrap 3, and wanted to use the default paginations styles.

There is a gem for will_paginate that allows you to do the same, but Kaminari it's much more flixible