From 8fc7474e5d4b5a8419811c05a53055439e88e7ea Mon Sep 17 00:00:00 2001 From: Lucas Date: Sat, 15 Jul 2017 07:12:42 +0200 Subject: [PATCH] Add hook for automatic pagination links. --- lib/jsonapi/rails/action_controller.rb | 4 ++++ lib/jsonapi/rails/railtie.rb | 6 ++++++ 2 files changed, 10 insertions(+) diff --git a/lib/jsonapi/rails/action_controller.rb b/lib/jsonapi/rails/action_controller.rb index 746f423..67716bc 100644 --- a/lib/jsonapi/rails/action_controller.rb +++ b/lib/jsonapi/rails/action_controller.rb @@ -42,6 +42,10 @@ def deserializable_resource(key, options = {}, &block) end end + def jsonapi_pagination(_collection) + nil + end + def jsonapi_pointers request.env[JSONAPI_POINTERS_KEY] end diff --git a/lib/jsonapi/rails/railtie.rb b/lib/jsonapi/rails/railtie.rb index 4653642..4a46d65 100644 --- a/lib/jsonapi/rails/railtie.rb +++ b/lib/jsonapi/rails/railtie.rb @@ -30,6 +30,12 @@ class Railtie < ::Rails::Railtie ::ActionController::Renderers.add(:jsonapi) do |resources, options| self.content_type ||= Mime[:jsonapi] + # Renderer proc is evaluated in the controller context, so it + # has access to the jsonapi_pagination method. + if (pagination_links = jsonapi_pagination(resources)) + (options[:links] ||= {}).merge!(pagination_links) + end + RENDERERS[:jsonapi].render(resources, options).to_json end