Skip to content

Instantly share code, notes, and snippets.

class Configuration
def method_missing(name)
self.class.instance_variable_get("@#{name}")
end
def self.set(name, value)
instance_variable_set("@#{name}", value)
end
def self.default(name, value)
require "minitest/autorun"
require "minitest/spec"
class Pager
def initialize(total_rows:, rows_per_page:)
@total_rows = total_rows
@rows_per_page = rows_per_page
end
def total_pages
> rows_per_page = 10
=> 10
> total_rows = 33
=> 33
> total_rows/rows_per_page
=> 3
> total_rows/rows_per_page.to_f
require "minitest/autorun"
require "minitest/spec"
class Pager
def initialize(rows:, rows_per_page:)
@rows = rows
@rows_per_page = rows_per_page
end
def total_pages
require "minitest/autorun"
require "minitest/spec"
require "ostruct"
class Pager
def initialize(rows:, rows_per_page:)
@rows = rows
@rows_per_page = rows_per_page
end
# Assuming we have 33 rows.
pager = Pager.new(rows: rows, rows_per_page: 10)
pager.rows(1) # The first 10 rows
pager.rows(2) # The next 10 rows
pager.rows(3) # The next 10 rows
pager.rows(4) # The last 3 rows
# Controller
recipes = Recipe.all
@pager = Pager.new(results: recipes, rows_per_page: 10, page: 1)
# ERB template
<% @pager.rows.each do |row| %>
<%= row.name %>
<% end %>
require "minitest/autorun"
require "minitest/spec"
class Pager
def initialize(results:, rows_per_page:)
@results = results
@rows_per_page = rows_per_page
end
def total_pages