Skip to content

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


# 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 ==.

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.

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.


# 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 ==.

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.

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.

3 participants