Commit 187d84a4 by ivan Lan

Improve Shotengai::Controller::Base about :paginate

parent 8adb9b64
......@@ -75,7 +75,9 @@ module Shotengai
def index
page = params[:page] || 1
per_page = params[:per_page] || 10
@resources = index_resources.paginate(page: page, per_page: per_page)
# @resources = index_resources.paginate(page: page, per_page: per_page)
@resources = paginate(index_resources, page: page, per_page: per_page)
respond_with @resources, template: "#{@template_dir}/index"
end
......@@ -106,6 +108,7 @@ module Shotengai
end
private
# Instance method: default_query
# example:
# def default_query resources
......@@ -147,6 +150,20 @@ module Shotengai
@resource = default_resources.find(params[:id])
end
def paginate resources, page: , per_page:
return resources if skip_paginate?
# page start with 1
if resources.is_a?(Array)
resources[(page - 1) * per_page ... page * per_page] || []
else
resources.offset((page - 1) * per_page).limit(per_page)
end
end
def skip_paginate?
page <= 0 || per_page <= 0
end
# If you want to add custome columns, you can do just like:
# def resource_params
# super&.merge params.require(:some_key)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment