fixing array rendering when elements doesn't have a serializer

This commit is contained in:
João Moura 2015-06-22 03:15:37 -03:00
parent d589268f95
commit 189b79523c
2 changed files with 14 additions and 9 deletions

View File

@ -39,17 +39,19 @@ module ActionController
options.partition { |k, _| ADAPTER_OPTION_KEYS.include? k }.map { |h| Hash[h] } options.partition { |k, _| ADAPTER_OPTION_KEYS.include? k }.map { |h| Hash[h] }
if use_adapter? && (serializer = get_serializer(resource)) if use_adapter? && (serializer = get_serializer(resource))
@_serializer_opts[:scope] ||= serialization_scope @_serializer_opts[:scope] ||= serialization_scope
@_serializer_opts[:scope_name] = _serialization_scope @_serializer_opts[:scope_name] = _serialization_scope
# omg hax object = serializer.new(resource, @_serializer_opts)
object = serializer.new(resource, @_serializer_opts)
adapter = ActiveModel::Serializer::Adapter.create(object, @_adapter_opts) if serializer == ActiveModel::Serializer.config.array_serializer
super(adapter, options) resource = ActiveModel::Serializer::Adapter.create(object, @_adapter_opts) unless object.objects.all? {|i| i.nil?}
else else
super(resource, options) resource = ActiveModel::Serializer::Adapter.create(object, @_adapter_opts)
end
end end
super(resource, options)
end end
end end

View File

@ -4,7 +4,7 @@ module ActiveModel
include Enumerable include Enumerable
delegate :each, to: :@objects delegate :each, to: :@objects
attr_reader :meta, :meta_key attr_reader :meta, :meta_key, :objects
def initialize(objects, options = {}) def initialize(objects, options = {})
@resource = objects @resource = objects
@ -13,7 +13,10 @@ module ActiveModel
:serializer, :serializer,
ActiveModel::Serializer.serializer_for(object) ActiveModel::Serializer.serializer_for(object)
) )
serializer_class.new(object, options.except(:serializer))
unless serializer_class.nil?
serializer_class.new(object, options.except(:serializer))
end
end end
@meta = options[:meta] @meta = options[:meta]
@meta_key = options[:meta_key] @meta_key = options[:meta_key]