Module: Kaminari::PageScopeMethods

Included in:
DataMapperExtension::Paginating, PluckyCriteriaMethods
Defined in:
lib/kaminari/models/page_scope_methods.rb

Instance Method Summary collapse

Instance Method Details

#current_pageObject

Current page number



37
38
39
40
41
42
43
# File 'lib/kaminari/models/page_scope_methods.rb', line 37

def current_page
  offset_without_padding = offset_value
  offset_without_padding -= @_padding if defined?(@_padding) && @_padding
  offset_without_padding = 0 if offset_without_padding < 0

  (offset_without_padding / limit_value) + 1
end

#first_page?Boolean

First page of the collection?

Returns:

  • (Boolean)


56
57
58
# File 'lib/kaminari/models/page_scope_methods.rb', line 56

def first_page?
  current_page == 1
end

#last_page?Boolean

Last page of the collection?

Returns:

  • (Boolean)


61
62
63
# File 'lib/kaminari/models/page_scope_methods.rb', line 61

def last_page?
  current_page >= total_pages
end

#next_pageObject

Next page number in the collection



46
47
48
# File 'lib/kaminari/models/page_scope_methods.rb', line 46

def next_page
  current_page + 1 unless last_page?
end

#out_of_range?Boolean

Out of range of the collection?

Returns:

  • (Boolean)


66
67
68
# File 'lib/kaminari/models/page_scope_methods.rb', line 66

def out_of_range?
  current_page > total_pages
end

#padding(num) ⇒ Object



15
16
17
18
# File 'lib/kaminari/models/page_scope_methods.rb', line 15

def padding(num)
  @_padding = num
  offset(offset_value + num.to_i)
end

#per(num) ⇒ Object

Specify the per_page value for the preceding page scope

Model.page(3).per(10)


5
6
7
8
9
10
11
12
13
# File 'lib/kaminari/models/page_scope_methods.rb', line 5

def per(num)
  if (n = num.to_i) <= 0
    self
  elsif max_per_page && max_per_page < n
    limit(max_per_page).offset(offset_value / limit_value * max_per_page)
  else
    limit(n).offset(offset_value / limit_value * n)
  end
end

#prev_pageObject

Previous page number in the collection



51
52
53
# File 'lib/kaminari/models/page_scope_methods.rb', line 51

def prev_page
  current_page - 1 unless first_page?
end

#total_pagesObject Also known as: num_pages

Total number of pages



21
22
23
24
25
26
27
28
29
30
31
32
# File 'lib/kaminari/models/page_scope_methods.rb', line 21

def total_pages
  count_without_padding = total_count
  count_without_padding -= @_padding if defined?(@_padding) && @_padding
  count_without_padding = 0 if count_without_padding < 0

  total_pages_count = (count_without_padding.to_f / limit_value).ceil
  if max_pages.present? && max_pages < total_pages_count
    max_pages
  else
    total_pages_count
  end
end