Module: BazaModels::Helpers::RansackerHelper

Defined in:
lib/baza_models/helpers/ransacker_helper.rb

Instance Method Summary collapse

Instance Method Details

#bm_paginate_content(collection) ⇒ Object



2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/baza_models/helpers/ransacker_helper.rb', line 2

def bm_paginate_content(collection)
  require "html_gen"

  new_params = params.dup.permit!
  current_page = collection.page
  total_pages = collection.total_pages

  container = HtmlGen::Element.new(:div)

  if current_page > 1
    new_params[:page] = current_page - 1
    container.add_ele(:a, str: "Previous", attr: {href: url_for(new_params)})
  else
    container.add_ele(:span, str: "Previous")
  end

  1.upto(collection.total_pages) do |page_i|
    new_params[:page] = page_i

    link = container.add_ele(:a, attr: {href: url_for(new_params)})

    if page_i == current_page
      link.add_ele(:b, str: page_i.to_s)
    else
      link.add_str(page_i.to_s)
    end
  end

  if current_page < total_pages
    new_params[:page] = current_page + 1
    container.add_ele(:a, str: "Next", attr: {href: url_for(new_params)})
  else
    container.add_ele(:span, str: "Next")
  end

  container.html
end


40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
# File 'lib/baza_models/helpers/ransacker_helper.rb', line 40

def bm_sort_link(ransacker, attribute, label = nil)
  require "html_gen"

  label = ransacker.klass.human_attribute_name(attribute) if label.to_s.strip.empty?

  new_params = params.clone
  new_params[:q] ||= {}

  sort_asc = "#{attribute} asc"

  if new_params[:q][:s] == sort_asc
    new_params[:q][:s] = "#{attribute} desc"
  else
    new_params[:q][:s] = sort_asc
  end

  href = url_for(new_params.permit!)

  element = HtmlGen::Element.new(:a, str: label, attr: {href: href})
  element.html
end