Fix #1759, Grape integration, adds serialization_context

- improves improves serialization_context to take options and not depend
on a `request` object.
- adds descriptive error on missing serialization_context.
- Document overriding `CollectionSerializer#paginated?`.
This commit is contained in:
Benjamin Fleischer
2016-05-29 16:21:45 -05:00
parent a52189c9c0
commit a7296e8a92
6 changed files with 63 additions and 14 deletions

View File

@@ -1,4 +1,7 @@
# Helpers can be included in your Grape endpoint as: helpers Grape::Helpers::ActiveModelSerializers
require 'active_model_serializers/serialization_context'
module Grape
module Helpers
module ActiveModelSerializers
@@ -8,6 +11,12 @@ module Grape
#
# Example: To include pagination meta data: render(posts, meta: { page: posts.page, total_pages: posts.total_pages })
def render(resource, active_model_serializer_options = {})
active_model_serializer_options.fetch(:serialization_context) do
active_model_serializer_options[:serialization_context] = ::ActiveModelSerializers::SerializationContext.new(
original_url: request.url[/\A[^?]+/],
query_parameters: request.params
)
end
env[:active_model_serializer_options] = active_model_serializer_options
resource
end