diff --git a/lib/grape-active_model_serializers/formatter.rb b/lib/grape-active_model_serializers/formatter.rb index 693acb2..c0d8dae 100644 --- a/lib/grape-active_model_serializers/formatter.rb +++ b/lib/grape-active_model_serializers/formatter.rb @@ -13,6 +13,11 @@ module Grape @endpoint = env["api.endpoint"] options = endpoint.namespace_options.merge(endpoint.route_options) + if resource.is_a?(Array) && !resource.empty? + # ensure we have an root to fallback on + endpoint.controller_name = resource.first.class.name.underscore.pluralize + end + serializer = ::ActiveModel::Serializer.build_json(endpoint, resource, options) if serializer diff --git a/lib/grape/endpoint_extension.rb b/lib/grape/endpoint_extension.rb index 944b836..dac398f 100644 --- a/lib/grape/endpoint_extension.rb +++ b/lib/grape/endpoint_extension.rb @@ -6,6 +6,8 @@ # module Grape module EndpointExtension + attr_accessor :controller_name + def namespace_options settings[:namespace] ? settings[:namespace].options : {} end @@ -18,7 +20,6 @@ module Grape def serialization_scope; end def _serialization_scope; end def url_options; end - def controller_name; end end Endpoint.send(:include, EndpointExtension)