Setting Up Pagy with Ajax-Datatables-Rails for Server-Side Pagination
Implementing server-side pagination can significantly improve performance, especially for applications with large datasets. In this blog post, you’ll learn how to integrate Pagy with Ajax-Datatables-Rails to efficiently manage server-side pagination in a Ruby on Rails application.
Why Use Pagy?
Performance
Pagy is an extremely efficient pagination gem. It’s up to 40 times faster than other pagination libraries, making it a perfect fit for high-performance applications.
Simplicity
Pagy offers a straightforward syntax that integrates seamlessly with Ruby on Rails, reducing the complexity of your codebase.
Setting Up Pagy
Installation
First, add the Pagy gem to your Gemfile.
gem 'pagy'
Then run the bundle install command to install the gem.
Create an initializer for Pagy in config/initializers/pagy.rb and customize the defaults to your liking - docs referenced at the end of this post.
Integrating Ajax-Datatables-Rails
Installation Add the following gem to your Gemfile:
gem 'ajax-datatables-rails'
Creating a Datatable Object Create a new datatable object, for example, user_datatable.rb:
# app/datatables/user_datatable.rb
class UserDatatable < AjaxDatatablesRails::ActiveRecord
extend AjaxDatatablesRails::Extensions::Kaminari
# ... rest of your code
end
Implementing Server-Side Pagination Modify your index action in the controller:
# app/controllers/users_controller.rb
def index
respond_to do |format|
format.html
format.json { render json: UserDatatable.new(params, view_context: view_context) }
end
end
# app/datatables/user_datatable.rb
class UserDatatable < AjaxDatatablesRails::ActiveRecord
def get_raw_records
@pagy, records = pagy(User.all)
records
end
end
Conclusion
Integrating Pagy with Ajax-Datatables-Rails offers a robust, efficient solution for implementing server-side pagination. This combination not only enhances performance but also simplifies your codebase.