Skip to content

Add hook for automatic pagination links. #35

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 1 commit into from
Jul 25, 2017
Merged

Add hook for automatic pagination links. #35

merged 1 commit into from
Jul 25, 2017

Conversation

beauby
Copy link
Member

@beauby beauby commented Jul 15, 2017

Closes #28. On top of #34.

Introduces a jsonapi_pagination hook in ActionController::Base that can be used to inject a hash of pagination links.

Example:

class ApplicationController < ActionController::Base
  def jsonapi_pagination(collection)
    { first: ..., last: ..., prev: ..., next: ... } if collection.paginated?
  end
end

@@ -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)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assignment in condition - you probably meant to use ==.

@@ -33,6 +40,10 @@ def _deserializable(key, options, fallback, &block)
end
end

def jsonapi_pagination(collection)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused method argument - collection. If it's necessary, use _ or _collection as an argument name to indicate that it won't be used. You can also write as jsonapi_pagination(*) if you want the method to accept any arguments but don't care about them.

{ "#{key}_id".to_sym => id, "#{key}_type".to_sym => type }
end
has_many do |_rel, ids, types, key|
key = key.to_s.singularize

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unnecessary spacing detected.
Operator = should be surrounded by a single space.

@@ -3,26 +3,33 @@

module JSONAPI
module Rails
module Deserializable
class Resource < JSONAPI::Deserializable::Resource

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing top-level class documentation comment.

@@ -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)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Assignment in condition - you probably meant to use ==.

@@ -33,6 +40,10 @@ def _deserializable(key, options, fallback, &block)
end
end

def jsonapi_pagination(collection)

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unused method argument - collection. If it's necessary, use _ or _collection as an argument name to indicate that it won't be used. You can also write as jsonapi_pagination(*) if you want the method to accept any arguments but don't care about them.

{ "#{key}_id".to_sym => id, "#{key}_type".to_sym => type }
end
has_many do |_rel, ids, types, key|
key = key.to_s.singularize

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Unnecessary spacing detected.
Operator = should be surrounded by a single space.

@@ -3,26 +3,33 @@

module JSONAPI
module Rails
module Deserializable
class Resource < JSONAPI::Deserializable::Resource

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Missing top-level class documentation comment.

@beauby beauby merged commit 0cfadb5 into master Jul 25, 2017
@beauby beauby deleted the pagination branch July 25, 2017 07:06
mdeutsch pushed a commit to patientslikeme/jsonapi-rails that referenced this pull request Jul 25, 2017
* upstream/master:
  Conditionally include controller mixin (jsonapi-rb#40)
  Add initializer generator. (jsonapi-rb#39)
  Add ActiveSupport::Notifications instrumentation. (jsonapi-rb#41)
  Add library configuration object (jsonapi-rb#17)
  Rename JSONAPI::Rails::ActionController to JSONAPI::Rails::Controller. (jsonapi-rb#38)
  Add hook for default jsonapi object. (jsonapi-rb#37)
  Add hook for default exposures. (jsonapi-rb#36)
  Add hook for automatic pagination links. (jsonapi-rb#35)
  Upgrade to new jsonapi-deserializable version. (jsonapi-rb#34)
  Prepare for v0.2.1 release
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants