pagy 9.2.0 → 9.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
data/apps/keyset_ar.ru CHANGED
@@ -1,70 +1,169 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Starting point to reproduce keyset related pagy issues
4
-
3
+ # DESCRIPTION
4
+ # Showcase the keyset ActiveRecord pagination
5
+ #
6
+ # DOC
7
+ # https://ddnexus.github.io/pagy/playground/#5-keyset-apps
8
+ #
9
+ # BIN HELP
10
+ # bundle exec pagy -h
11
+ #
5
12
  # DEV USAGE
6
- # pagy clone rails
7
- # pagy ./keyset.ru
8
-
13
+ # bundle exec pagy clone keyset_ar
14
+ # bundle exec pagy ./keyset_ar.ru
15
+ #
9
16
  # URL
10
17
  # http://0.0.0.0:8000
11
18
 
12
- # HELP
13
- # pagy -h
14
-
15
- # DOC
16
- # https://ddnexus.github.io/pagy/playground/#5-keyset-app
17
-
18
- VERSION = '8.6.2'
19
+ VERSION = '9.3.1'
19
20
 
20
- # Gemfile
21
+ # Bundle
21
22
  require 'bundler/inline'
22
23
  require 'bundler'
23
24
  Bundler.configure
24
25
  gemfile(ENV['PAGY_INSTALL_BUNDLE'] == 'true') do
25
26
  source 'https://rubygems.org'
26
- gem 'oj'
27
+ gem 'activerecord'
27
28
  gem 'puma'
28
- gem 'rails'
29
- # activerecord/sqlite3_adapter.rb probably useless) constraint !!!
30
- # https://github.com/rails/rails/blame/v7.1.3.4/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb#L14
31
- gem 'sqlite3', '~> 1.4.0'
29
+ gem 'sinatra'
30
+ gem 'sqlite3'
32
31
  end
33
32
 
34
- # require 'rails/all' # too much stuff
35
- require 'action_controller/railtie'
36
- require 'active_record'
33
+ # Pagy initializer
34
+ require 'pagy/extras/limit'
35
+ require 'pagy/extras/keyset'
36
+ require 'pagy/extras/pagy'
37
+ Pagy::DEFAULT[:limit] = 10
38
+ Pagy::DEFAULT.freeze
39
+
40
+ # Sinatra setup
41
+ require 'sinatra/base'
42
+ # Sinatra application
43
+ class PagyKeyset < Sinatra::Base
44
+ include Pagy::Backend
45
+ # Root route/action
46
+ get '/' do
47
+ Time.zone = 'UTC'
37
48
 
38
- OUTPUT = Rails.env.showcase? ? IO::NULL : $stdout
49
+ @order = { animal: :asc, name: :asc, birthdate: :desc, id: :asc }
50
+ @pagy, @pets = pagy_keyset(Pet.order(@order))
51
+ erb :main
52
+ end
39
53
 
40
- # Rails config
41
- class PagyKeyset < Rails::Application # :nodoc:
42
- config.root = __dir__
43
- config.session_store :cookie_store, key: 'cookie_store_key'
44
- Rails.application.credentials.secret_key_base = 'absolute_secret'
54
+ helpers do
55
+ include Pagy::Frontend
45
56
 
46
- config.logger = Logger.new(OUTPUT)
47
- Rails.logger = config.logger
57
+ def order_symbol(dir)
58
+ { asc: '&#x2197;', desc: '&#x2198;' }[dir]
59
+ end
60
+ end
48
61
 
49
- routes.draw do
50
- root to: 'pets#index'
62
+ # Views
63
+ template :layout do
64
+ <<~ERB
65
+ <!DOCTYPE html>
66
+ <html lang="en">
67
+ <html>
68
+ <head>
69
+ <title>Pagy Keyset App</title>
70
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
71
+ <style type="text/css">
72
+ @media screen { html, body {
73
+ font-size: 1rem;
74
+ line-height: 1.2s;
75
+ padding: 0;
76
+ margin: 0;
77
+ } }
78
+ body {
79
+ background: white !important;
80
+ margin: 0 !important;
81
+ font-family: sans-serif !important;
82
+ }
83
+ .content {
84
+ padding: 1rem 1.5rem 2rem !important;
85
+ }
86
+
87
+ <%= Pagy.root.join('stylesheets', 'pagy.css').read %>
88
+ </style>
89
+ </head>
90
+ <body>
91
+ <%= yield %>
92
+ </body>
93
+ </html>
94
+ ERB
95
+ end
96
+
97
+ template :main do
98
+ <<~ERB
99
+ <div class="content">
100
+ <h1>Pagy Keyset App</h1>
101
+ <p>Self-contained, standalone app usable to easily reproduce any keyset related pagy issue with ActiveRecord sets.</p>
102
+ <p>Please, report the following versions in any new issue.</p>
103
+ <h2>Versions</h2>
104
+ <ul>
105
+ <li>Ruby: <%= RUBY_VERSION %></li>
106
+ <li>Rack: <%= Rack::RELEASE %></li>
107
+ <li>Sinatra: <%= Sinatra::VERSION %></li>
108
+ <li>Pagy: <%= Pagy::VERSION %></li>
109
+ </ul>
110
+
111
+ <h3>Collection</h3>
112
+ <div id="records" class="collection">
113
+ <table border="1" cellspacing="0" cellpadding="3">
114
+ <tr>
115
+ <th>animal <%= order_symbol(@order[:animal]) %></th>
116
+ <th>name <%= order_symbol(@order[:name]) %></th>
117
+ <th>birthdate <%= order_symbol(@order[:birthdate]) %></th>
118
+ <th>id <%= order_symbol(@order[:id]) %></th>
119
+ </tr>
120
+ <% @pets.each do |pet| %>
121
+ <tr>
122
+ <td><%= pet.animal %></td>
123
+ <td><%= pet.name %></td>
124
+ <td><%= pet.birthdate %></td>
125
+ <td><%= pet.id %></td>
126
+ </tr>
127
+ <% end %>
128
+ </table>
129
+ </div>
130
+ <p>
131
+ <nav class="pagy" id="next" aria-label="Pagy next">
132
+ <%= pagy_next_a(@pagy, text: 'Next page &gt;') %>
133
+ </nav>
134
+ </div>
135
+ ERB
51
136
  end
52
137
  end
53
138
 
54
- dir = Rails.env.development? ? '.' : Dir.pwd # app dir in dev or pwd otherwise
55
- unless File.writable?(dir)
56
- warn "ERROR: directory #{dir.inspect} is not writable (the pagy-rails-app needs to create DB files)"
57
- exit 1
139
+ # ActiveRecord setup
140
+ require 'active_record'
141
+
142
+ # Match the microsecods with the strings stored into the time columns of SQLite
143
+ # ActiveSupport::JSON::Encoding.time_precision = 6
144
+
145
+ # Log
146
+ output = ENV['APP_ENV'].equal?('showcase') ? IO::NULL : $stdout
147
+ ActiveRecord::Base.logger = Logger.new(output)
148
+ # SQLite DB files
149
+ dir = ENV['APP_ENV'].equal?('development') ? '.' : Dir.pwd # app dir in dev or pwd otherwise
150
+ abort "ERROR: Cannot create DB files: the directory #{dir.inspect} is not writable." \
151
+ unless File.writable?(dir)
152
+ # Connection
153
+ ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: "#{dir}/tmp/pagy-keyset-ar.sqlite3")
154
+ # Schema
155
+ ActiveRecord::Schema.define do
156
+ create_table :pets, force: true do |t|
157
+ t.string :animal
158
+ t.string :name
159
+ t.date :birthdate
160
+ end
58
161
  end
59
162
 
60
- # Pagy initializer
61
- require 'pagy/extras/pagy'
62
- require 'pagy/extras/limit'
63
- require 'pagy/extras/keyset'
64
- Pagy::DEFAULT[:limit] = 10
65
- Pagy::DEFAULT.freeze
163
+ # Models
164
+ class Pet < ActiveRecord::Base; end
66
165
 
67
- PETS = <<~PETS
166
+ data = <<~DATA
68
167
  Luna | dog | 2018-03-10
69
168
  Coco | cat | 2019-05-15
70
169
  Dodo | dog | 2020-06-25
@@ -115,122 +214,14 @@ PETS = <<~PETS
115
214
  Sary | bird | 2023-04-29
116
215
  Rocky | bird | 2023-05-14
117
216
  Coco | dog | 2023-05-27
118
- PETS
119
-
120
- # Activerecord initializer
121
- ActiveRecord::Base.logger = Logger.new(OUTPUT)
122
- ActiveRecord::Base.establish_connection(adapter: 'sqlite3', database: "#{dir}/tmp/pagy-keyset-ar.sqlite3")
123
- ActiveRecord::Schema.define do
124
- create_table :pets, force: true do |t|
125
- t.string :animal
126
- t.string :name
127
- t.date :birthdate
128
- end
129
- end
130
-
131
- # Models
132
- class Pet < ActiveRecord::Base
133
- end
217
+ DATA
134
218
 
135
219
  # DB seed
136
220
  pets = []
137
- PETS.each_line(chomp: true) do |pet|
221
+ data.each_line(chomp: true) do |pet|
138
222
  name, animal, birthdate = pet.split('|').map(&:strip)
139
223
  pets << { name:, animal:, birthdate: }
140
224
  end
141
225
  Pet.insert_all(pets)
142
226
 
143
- # Helpers
144
- module PetsHelper
145
- include Pagy::Frontend
146
-
147
- def order_symbol(dir)
148
- { asc: '&#x2197;', desc: '&#x2198;' }[dir]
149
- end
150
- end
151
-
152
- # Controllers
153
- class PetsController < ActionController::Base # :nodoc:
154
- include Rails.application.routes.url_helpers
155
- include Pagy::Backend
156
-
157
- def index
158
- Time.zone = 'UTC'
159
-
160
- @order = { animal: :asc, name: :asc, birthdate: :desc, id: :asc }
161
- @pagy, @pets = pagy_keyset(Pet.order(@order))
162
- render inline: TEMPLATE
163
- end
164
- end
165
-
166
- TEMPLATE = <<~ERB
167
- <!DOCTYPE html>
168
- <html lang="en">
169
- <html>
170
- <head>
171
- <title>Pagy Keyset App</title>
172
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
173
- <style type="text/css">
174
- @media screen { html, body {
175
- font-size: 1rem;
176
- line-height: 1.2s;
177
- padding: 0;
178
- margin: 0;
179
- } }
180
- body {
181
- background: white !important;
182
- margin: 0 !important;
183
- font-family: sans-serif !important;
184
- }
185
- .content {
186
- padding: 1rem 1.5rem 2rem !important;
187
- }
188
-
189
- <%== Pagy.root.join('stylesheets', 'pagy.css').read %>
190
- </style>
191
- </head>
192
-
193
- <body>
194
-
195
- <div class="content">
196
- <h1>Pagy Keyset App</h1>
197
- <p>Self-contained, standalone Rails app usable to easily reproduce any keyset related pagy issue with ActiveRecord sets.</p>
198
- <p>Please, report the following versions in any new issue.</p>
199
- <h2>Versions</h2>
200
- <ul>
201
- <li>Ruby: <%== RUBY_VERSION %></li>
202
- <li>Rack: <%== Rack::RELEASE %></li>
203
- <li>Rails: <%== Rails.version %></li>
204
- <li>Pagy: <%== Pagy::VERSION %></li>
205
- </ul>
206
-
207
- <h3>Collection</h3>
208
- <div id="records" class="collection">
209
- <table border="1" cellspacing="0" cellpadding="3">
210
- <tr>
211
- <th>animal <%== order_symbol(@order[:animal]) %></th>
212
- <th>name <%== order_symbol(@order[:name]) %></th>
213
- <th>birthdate <%== order_symbol(@order[:birthdate]) %></th>
214
- <th>id <%== order_symbol(@order[:id]) %></th>
215
- </tr>
216
- <% @pets.each do |pet| %>
217
- <tr>
218
- <td><%= pet.animal %></td>
219
- <td><%= pet.name %></td>
220
- <td><%= pet.birthdate %></td>
221
- <td><%= pet.id %></td>
222
- </tr>
223
- <% end %>
224
- </table>
225
- </div>
226
- <p>
227
- <nav class="pagy" id="next" aria-label="Pagy next">
228
- <%== pagy_next_a(@pagy, text: 'Next page &gt;') %>
229
- </nav>
230
- </div>
231
-
232
- </body>
233
- </html>
234
- ERB
235
-
236
227
  run PagyKeyset
data/apps/keyset_s.ru CHANGED
@@ -1,71 +1,163 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- # Starting point to reproduce keyset related pagy issues
4
-
3
+ # DESCRIPTION
4
+ # Showcase the keyset ActiveRecord pagination
5
+ #
6
+ # DOC
7
+ # https://ddnexus.github.io/pagy/playground/#5-keyset-apps
8
+ #
9
+ # BIN HELP
10
+ # bundle exec pagy -h
11
+ #
5
12
  # DEV USAGE
6
- # pagy clone rails
7
- # pagy ./keyset.ru
8
-
13
+ # bundle exec pagy clone keyset_ar
14
+ # bundle exec pagy ./keyset_ar.ru
15
+ #
9
16
  # URL
10
17
  # http://0.0.0.0:8000
11
18
 
12
- # HELP
13
- # pagy -h
14
-
15
- # DOC
16
- # https://ddnexus.github.io/pagy/playground/#5-keyset-app
17
-
18
- VERSION = '8.6.2'
19
+ VERSION = '9.3.1'
19
20
 
20
- # Gemfile
21
+ # Bundle
21
22
  require 'bundler/inline'
22
23
  require 'bundler'
23
24
  Bundler.configure
24
25
  gemfile(ENV['PAGY_INSTALL_BUNDLE'] == 'true') do
25
26
  source 'https://rubygems.org'
26
- gem 'oj'
27
27
  gem 'puma'
28
- gem 'rails'
29
- # activerecord/sqlite3_adapter.rb probably useless) constraint !!!
30
- # https://github.com/rails/rails/blame/v7.1.3.4/activerecord/lib/active_record/connection_adapters/sqlite3_adapter.rb#L14
31
- gem 'sqlite3', '~> 1.4.0'
32
28
  gem 'sequel'
29
+ gem 'sinatra'
30
+ gem 'sqlite3'
33
31
  end
34
32
 
35
- # require 'rails/all' # too much stuff
36
- require 'action_controller/railtie'
37
- require 'sequel'
33
+ # Pagy initializer
34
+ require 'pagy/extras/limit'
35
+ require 'pagy/extras/keyset'
36
+ require 'pagy/extras/pagy'
37
+ Pagy::DEFAULT[:limit] = 10
38
+ Pagy::DEFAULT.freeze
38
39
 
39
- OUTPUT = Rails.env.showcase? ? IO::NULL : $stdout
40
+ # Sinatra setup
41
+ require 'sinatra/base'
42
+ require 'logger'
43
+ # Sinatra application
44
+ class PagyKeyset < Sinatra::Base
45
+ include Pagy::Backend
46
+ # Root route/action
47
+ get '/' do
48
+ @order = { animal: :asc, name: :asc, birthdate: :desc, id: :asc }
49
+ @pagy, @pets = pagy_keyset(Pet.order(:animal, :name, Sequel.desc(:birthdate), :id))
50
+ erb :main
51
+ end
40
52
 
41
- # Rails config
42
- class PagyKeyset < Rails::Application # :nodoc:
43
- config.root = __dir__
44
- config.session_store :cookie_store, key: 'cookie_store_key'
45
- Rails.application.credentials.secret_key_base = 'absolute_secret'
53
+ helpers do
54
+ include Pagy::Frontend
55
+
56
+ def order_symbol(dir)
57
+ { asc: '&#x2197;', desc: '&#x2198;' }[dir]
58
+ end
59
+ end
46
60
 
47
- config.logger = Logger.new(OUTPUT)
48
- Rails.logger = config.logger
61
+ # Views
62
+ template :layout do
63
+ <<~ERB
64
+ <!DOCTYPE html>
65
+ <html lang="en">
66
+ <html>
67
+ <head>
68
+ <title>Pagy Keyset App</title>
69
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
70
+ <style type="text/css">
71
+ @media screen { html, body {
72
+ font-size: 1rem;
73
+ line-height: 1.2s;
74
+ padding: 0;
75
+ margin: 0;
76
+ } }
77
+ body {
78
+ background: white !important;
79
+ margin: 0 !important;
80
+ font-family: sans-serif !important;
81
+ }
82
+ .content {
83
+ padding: 1rem 1.5rem 2rem !important;
84
+ }
85
+
86
+ <%= Pagy.root.join('stylesheets', 'pagy.css').read %>
87
+ </style>
88
+ </head>
89
+ <body>
90
+ <%= yield %>
91
+ </body>
92
+ </html>
93
+ ERB
94
+ end
95
+
96
+ template :main do
97
+ <<~ERB
98
+ <div class="content">
99
+ <h1>Pagy Keyset App</h1>
100
+ <p>Self-contained, standalone app usable to easily reproduce any keyset related pagy issue with ActiveRecord sets.</p>
101
+ <p>Please, report the following versions in any new issue.</p>
102
+ <h2>Versions</h2>
103
+ <ul>
104
+ <li>Ruby: <%= RUBY_VERSION %></li>
105
+ <li>Rack: <%= Rack::RELEASE %></li>
106
+ <li>Sinatra: <%= Sinatra::VERSION %></li>
107
+ <li>Pagy: <%= Pagy::VERSION %></li>
108
+ </ul>
49
109
 
50
- routes.draw do
51
- root to: 'pets#index'
110
+ <h3>Collection</h3>
111
+ <div id="records" class="collection">
112
+ <table border="1" cellspacing="0" cellpadding="3">
113
+ <tr>
114
+ <th>animal <%= order_symbol(@order[:animal]) %></th>
115
+ <th>name <%= order_symbol(@order[:name]) %></th>
116
+ <th>birthdate <%= order_symbol(@order[:birthdate]) %></th>
117
+ <th>id <%= order_symbol(@order[:id]) %></th>
118
+ </tr>
119
+ <% @pets.each do |pet| %>
120
+ <tr>
121
+ <td><%= pet.animal %></td>
122
+ <td><%= pet.name %></td>
123
+ <td><%= pet.birthdate %></td>
124
+ <td><%= pet.id %></td>
125
+ </tr>
126
+ <% end %>
127
+ </table>
128
+ </div>
129
+ <p>
130
+ <nav class="pagy" id="next" aria-label="Pagy next">
131
+ <%= pagy_next_a(@pagy, text: 'Next page &gt;') %>
132
+ </nav>
133
+ </div>
134
+ ERB
52
135
  end
53
136
  end
54
137
 
55
- dir = Rails.env.development? ? '.' : Dir.pwd # app dir in dev or pwd otherwise
138
+ # Sequel setup
139
+ require 'sequel'
140
+ Sequel.default_timezone = :utc
141
+ # SQLite DB files
142
+ dir = ENV['APP_ENV'].equal?('development') ? '.' : Dir.pwd # app dir in dev or pwd otherwise
143
+ abort "ERROR: Cannot create DB files: the directory #{dir.inspect} is not writable." \
56
144
  unless File.writable?(dir)
57
- warn "ERROR: directory #{dir.inspect} is not writable (the pagy-rails-app needs to create DB files)"
58
- exit 1
145
+ # Connection
146
+ output = ENV['APP_ENV'].equal?('showcase') ? IO::NULL : $stdout
147
+ DB = Sequel.connect(adapter: 'sqlite', user: 'root', password: 'password', host: 'localhost', port: '3306',
148
+ database: "#{dir}/tmp/pagy-keyset-s.sqlite3", max_connections: 10, loggers: [Logger.new(output)])
149
+ # Schema
150
+ DB.create_table! :pets do
151
+ primary_key :id
152
+ String :animal, unique: false, null: false
153
+ String :name, unique: false, null: false
154
+ Date :birthdate, unique: false, null: false
59
155
  end
60
156
 
61
- # Pagy initializer
62
- require 'pagy/extras/pagy'
63
- require 'pagy/extras/limit'
64
- require 'pagy/extras/keyset'
65
- Pagy::DEFAULT[:limit] = 10
66
- Pagy::DEFAULT.freeze
157
+ # Models
158
+ class Pet < Sequel::Model; end
67
159
 
68
- PETS = <<~PETS
160
+ data = <<~DATA
69
161
  Luna | dog | 2018-03-10
70
162
  Coco | cat | 2019-05-15
71
163
  Dodo | dog | 2020-06-25
@@ -116,123 +208,12 @@ PETS = <<~PETS
116
208
  Sary | bird | 2023-04-29
117
209
  Rocky | bird | 2023-05-14
118
210
  Coco | dog | 2023-05-27
119
- PETS
120
-
121
- Sequel.default_timezone = :utc
122
-
123
- ## Sequel initializer
124
- DB = Sequel.connect(adapter: 'sqlite', user: 'root', password: 'password', host: 'localhost', port: '3306',
125
- database: "#{dir}/tmp/pagy-keyset-s.sqlite3", max_connections: 10, loggers: [Logger.new(OUTPUT)])
126
-
127
- DB.create_table! :pets do
128
- primary_key :id
129
- String :animal, unique: false, null: false
130
- String :name, unique: false, null: false
131
- Date :birthdate, unique: false, null: false
132
- end
211
+ DATA
133
212
 
134
213
  dataset = DB[:pets]
135
-
136
- PETS.each_line(chomp: true) do |pet|
214
+ data.each_line(chomp: true) do |pet|
137
215
  name, animal, birthdate = pet.split('|').map(&:strip)
138
216
  dataset.insert(name:, animal:, birthdate:)
139
217
  end
140
218
 
141
- # Models
142
- class Pet < Sequel::Model
143
- end
144
-
145
- # Helpers
146
- module PetsHelper
147
- include Pagy::Frontend
148
-
149
- def order_symbol(dir)
150
- { asc: '&#x2197;', desc: '&#x2198;' }[dir]
151
- end
152
- end
153
-
154
- # Controllers
155
- class PetsController < ActionController::Base # :nodoc:
156
- include Rails.application.routes.url_helpers
157
- include Pagy::Backend
158
-
159
- def index
160
- Time.zone = 'UTC'
161
-
162
- @order = { animal: :asc, name: :asc, birthdate: :desc, id: :asc }
163
- @pagy, @pets = pagy_keyset(Pet.order(:animal, :name, Sequel.desc(:birthdate), :id))
164
- render inline: TEMPLATE
165
- end
166
- end
167
-
168
- TEMPLATE = <<~ERB
169
- <!DOCTYPE html>
170
- <html lang="en">
171
- <html>
172
- <head>
173
- <title>Pagy Keyset App</title>
174
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
175
- <style type="text/css">
176
- @media screen { html, body {
177
- font-size: 1rem;
178
- line-height: 1.2s;
179
- padding: 0;
180
- margin: 0;
181
- } }
182
- body {
183
- background: white !important;
184
- margin: 0 !important;
185
- font-family: sans-serif !important;
186
- }
187
- .content {
188
- padding: 1rem 1.5rem 2rem !important;
189
- }
190
-
191
- <%== Pagy.root.join('stylesheets', 'pagy.css').read %>
192
- </style>
193
- </head>
194
-
195
- <body>
196
-
197
- <div class="content">
198
- <h1>Pagy Keyset App</h1>
199
- <p>Self-contained, standalone Rails app usable to easily reproduce any keyset related pagy issue with Sequel sets.</p>
200
- <p>Please, report the following versions in any new issue.</p>
201
- <h2>Versions</h2>
202
- <ul>
203
- <li>Ruby: <%== RUBY_VERSION %></li>
204
- <li>Rack: <%== Rack::RELEASE %></li>
205
- <li>Rails: <%== Rails.version %></li>
206
- <li>Pagy: <%== Pagy::VERSION %></li>
207
- </ul>
208
-
209
- <h3>Collection</h3>
210
- <div id="records" class="collection">
211
- <table border="1" cellspacing="0" cellpadding="3">
212
- <tr>
213
- <th>animal <%== order_symbol(@order[:animal]) %></th>
214
- <th>name <%== order_symbol(@order[:name]) %></th>
215
- <th>birthdate <%== order_symbol(@order[:birthdate]) %></th>
216
- <th>id <%== order_symbol(@order[:id]) %></th>
217
- </tr>
218
- <% @pets.each do |pet| %>
219
- <tr>
220
- <td><%= pet.animal %></td>
221
- <td><%= pet.name %></td>
222
- <td><%= pet.birthdate %></td>
223
- <td><%= pet.id %></td>
224
- </tr>
225
- <% end %>
226
- </table>
227
- </div>
228
- <p>
229
- <nav class="pagy" id="next" aria-label="Pagy next">
230
- <%== pagy_next_a(@pagy, text: 'Next page &gt;') %>
231
- </nav>
232
- </div>
233
-
234
- </body>
235
- </html>
236
- ERB
237
-
238
219
  run PagyKeyset