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