Skip to content

Instantly share code, notes, and snippets.

@vincentlkl
Last active July 20, 2016 13:21
Show Gist options
  • Save vincentlkl/9340e24593e3010b51d2596e42854224 to your computer and use it in GitHub Desktop.
Save vincentlkl/9340e24593e3010b51d2596e42854224 to your computer and use it in GitHub Desktop.

Revisions

  1. vincentlkl revised this gist Jul 20, 2016. 1 changed file with 1 addition and 2 deletions.
    3 changes: 1 addition & 2 deletions ItemDatatable.rb
    Original file line number Diff line number Diff line change
    @@ -1,9 +1,8 @@
    class ItemsDatatable
    delegate :params, :h, to: :@view

    def initialize(view, user)
    def initialize(view)
    @view = view
    @user = user
    end

    def as_json(options = {})
  2. vincentlkl renamed this gist Jul 20, 2016. 1 changed file with 0 additions and 0 deletions.
    File renamed without changes.
  3. vincentlkl created this gist Jul 20, 2016.
    58 changes: 58 additions & 0 deletions gistfile1.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,58 @@
    class ItemsDatatable
    delegate :params, :h, to: :@view

    def initialize(view, user)
    @view = view
    @user = user
    end

    def as_json(options = {})
    {
    sEcho: params[:sEcho].to_i,
    iTotalRecords: Item.count,
    iTotalDisplayRecords: items.total_entries,
    aaData: data
    }
    end

    private

    def data
    items.map do |item|
    [
    item.id,
    ]
    end
    end

    def items
    @items ||= fetch_items
    end

    def fetch_items
    items = Item.order("#{sort_column} #{sort_direction}")
    items = items.page(page).per_page(per_page)
    if params[:sSearch].present?
    items = items.where("CAST(items.id AS TEXT) ilike :search", search: "%#{params[:sSearch]}%")
    end
    items
    end

    def page
    params[:iDisplayStart].to_i/per_page + 1
    end

    def per_page
    params[:iDisplayLength].to_i > 0 ? params[:iDisplayLength].to_i : 10
    end

    def sort_column
    columns = %w[id]
    sort_col = "items.#{columns[params[:iSortCol_0].to_i]}"
    end

    def sort_direction
    params[:sSortDir_0] == "desc" ? "desc" : "asc"
    end
    end