Pagy
Pagy | tailwindcss-rails | |
---|---|---|
10 | 20 | |
4,464 | 1,354 | |
- | 1.0% | |
9.6 | 8.3 | |
6 days ago | 4 days ago | |
Ruby | Ruby | |
MIT License | GNU General Public License v3.0 or later |
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.
Pagy
-
Build Load More Pagination with Pagy and Rails Hotwire
Now, let's dive into the pagination part of this post: setting up Pagy for handling pagination in our Rails application. If you haven't included the Pagy gem in your project, you'll need to add it manually. Here's how you can do it:
-
Pagination in Rails with Pagy gem
Several gems are available for pagination in Rails, but the Pagy gem is one of the most popular and efficient. It is a fast and lightweight library that provides a simple and flexible API. In this article, we’ll explore how to use it to implement pagination in Rails.
-
Rux: A JSX-inspired way to render view components in Ruby
> Am I understanding correctly that there’s a significant difference in performance between using a ViewComponent + a partial vs. a ViewComponent which renders html via a tag - from inside the component?
I don't think there will be much difference at all in everyday use, but some libraries that value performance don't avoid templates for that reason, Pagy for example.
https://github.com/ddnexus/pagy
Personally I omit them in my projects whenever we want to customise attributes, I hate seeing stuff like this in templates:
Some header
-
A powerful search feature with what Rails provides out of the box
The next step was about backporting the templates, adding Pagy gem for handling pagination and creating the controller. I was then able to show the listings with the models, but the filtering was not working.
-
The Ultimate Search for Rails - Episode 1
On the backend, we'll need a few tools. Apart from the classics (ActiveRecord scopes and the pg_search gem), you’ll see how the (yet officially unreleased but production-tested) all_futures gem, built by SR authors, will act as an ideal ephemeral object to temporarily store our filter params and host our search logic. Finally, we’ll use pagy for pagination duties.
-
My project: railstart app
Pagination
-
Pagination and infinite scrolling with Rails and the Hotwire stack
In our application, we will use Pagy to implement pagination. Let’s install Pagy now, following along with the Pagy quick start guide.
-
Load More Pagination in Rails with Hotwire Turbo Streams
For pagination I tend not to use gems like pagy or kaminari, instead implement this functionality just using limit and offset.
-
Ten Ruby gems for Rails you should definitely know about
Kaminari hooks onto ActiveRecord associations and makes it super easy to page them. Pagy is another option that seems to have a solid API but I haven't tried it yet.
-
Re-Wheel series part 1 - How does Rails' find_each work?
But how is this implemented? Well, if you use pagination in your index methods with gems like pagy, kaminari or will_paginate you will find that the same idea is happening here, they are using the power of SQL's LIMIT and OFFSET to fetch only a portion of the data each time. So in the 1 million users example, find_each will perform 1000 thousand queries with a limit of 1000 while changing the offset properly so we don't miss any record.
tailwindcss-rails
-
Is the default importmap method unrealistic in the most popular real world use cases?
You can't use additional CSS packages (like Flowbite) with the official tailwindcss-rails gem. According to this answered issue, you should either give up importmap and use a bundler, or use a CSS file from CDN - which is not ideal (unnecessary classes won't be purged this way).
-
How to bundle assets in a Rails engine
You first install your asset handlers as you need them for your project. They can be anything from rails/jsbundling-rails and rails/tailwindcss-rails to webpacker or something custom.
-
Setup TailwindCSS, postcss and esbuild on Rails 7
Preconfigured TailwindCSS from TailwindCSS-rails ready to use out of the box, pass --css tailwind as an option.âś…
-
User notifications with Rails, Noticed, and Hotwire
Thanks to the magic of Rails, the scaffold generator gives us almost everything we need to start creating messages and associating them with users. Because we are using Tailwind via the tailwindcss-rails gem, the scaffold generator also includes some nice looking base styles too.
-
Pagination and infinite scrolling with Rails and the Hotwire stack
Because we are using Tailwind via the tailwindcss-rails gem, the scaffold generator applies some basic Tailwind styling to generated views, so we have nice looking Widget pages right out of the box.
-
Launching Multiple Processes with a Single Command in Rails
Here's a simple way to achieve this, inspired by the tailwindcss-rails gem.
-
How to Install Shoelace with Rails 7, esbuild, and Tailwind JIT
For more documentation on tailwind installation: https://github.com/rails/tailwindcss-rails
-
Upgrading from Rails 6.x Webpacker to Rails 7 Importmaps
gem "rails", "~> 7.0.0" # The original asset pipeline for Rails [https://github.com/rails/sprockets-rails] gem "sprockets-rails" # Use postgresql as the database for Active Record gem "pg", "~> 1.1" # Use the Puma web server [https://github.com/puma/puma] gem "puma", "~> 5.0" # Use JavaScript with ESM import maps [https://github.com/rails/importmap-rails] gem "importmap-rails" # Hotwire's SPA-like page accelerator [https://turbo.hotwired.dev] gem "turbo-rails" # Hotwire's modest JavaScript framework [https://stimulus.hotwired.dev] gem "stimulus-rails" # Use Tailwind CSS [https://github.com/rails/tailwindcss-rails] gem "tailwindcss-rails" # Build JSON APIs with ease [https://github.com/rails/jbuilder] gem "jbuilder" gem "redis", "~> 4.0"
-
Rails 7 Tailwind Scaffold Question
When you generate an app with rails new --css=tailwind without a JS option, you get the tailwindcss-rails gem which includes the new scaffold generators. When you pass in a JavaScript option as well, you get Tailwind installed via cssbundling-rails, which does not include built-in generators since it offers more than just Tailwind as an option.
- Tailwind-styled scaffold templates when using tailwindcss-rails
What are some alternatives?
Kaminari - ⚡ A Scope & Engine based, clean, powerful, customizable and sophisticated paginator for Ruby webapps
cssbundling-rails - Bundle and process CSS in Rails with Tailwind, PostCSS, and Sass via Node.js.
will_paginate - Pagination library for Rails and other Ruby applications
Foreman - Manage Procfile-based applications
order_query - Find next / previous Active Record(s) in one query
sprockets-rails - Sprockets Rails integration
strong_migrations - Catch unsafe migrations in development
hotwire-example-template - A collection of branches that transmit HTML over the wire.
phony_rails - This Gem adds useful methods to your Rails app to validate, display and save phone numbers. It uses the super awesome Phony gem (https://github.com/floere/phony).
flutter-roadmap - Roadmap for Flutter developers in 2020
money-rails - Integration of RubyMoney - Money with Rails
importmap-rails - Use ESM with importmap to manage modern JavaScript in Rails without transpiling or bundling.