Commit 187d84a4 by ivan Lan

Improve Shotengai::Controller::Base about :paginate

parent 8adb9b64
...@@ -75,7 +75,9 @@ module Shotengai ...@@ -75,7 +75,9 @@ module Shotengai
def index def index
page = params[:page] || 1 page = params[:page] || 1
per_page = params[:per_page] || 10 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" respond_with @resources, template: "#{@template_dir}/index"
end end
...@@ -106,6 +108,7 @@ module Shotengai ...@@ -106,6 +108,7 @@ module Shotengai
end end
private private
# Instance method: default_query # Instance method: default_query
# example: # example:
# def default_query resources # def default_query resources
...@@ -147,6 +150,20 @@ module Shotengai ...@@ -147,6 +150,20 @@ module Shotengai
@resource = default_resources.find(params[:id]) @resource = default_resources.find(params[:id])
end 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: # If you want to add custome columns, you can do just like:
# def resource_params # def resource_params
# super&.merge params.require(:some_key) # 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