2017-02-14 2 views
3

Я использую ресурс json api resource в моем проекте.Json Api Resources | ответ с массивом объектов

У меня есть установка простого ресурс

module V1 
    class ExpectedPaymentResource < JSONAPI::Resource 
    attributes :registration_id, :invoiced_amount_due, :date_due, :status, :created_at, :updated_at 
    end 
end 

В моем контроллере я получаю массив ExpectedPayments объектов из службы

expected_payments = CreateExpectedPayments.new(registration_params).call 

теперь мне нужно вернуть expected_payments в формате JSON API. Так, насколько я понимаю, я должен использовать serializer

Я делаю это

render json: JSONAPI::ResourceSerializer.new(ExpectedPaymentResource).serialize_to_hash(ExpectedPaymentResource.new(expected_payments, nil)) 

И я получаю <NoMethodError: undefined method 'id' for <Array:0x005642734fa6f8>>

А потом я попробовал:

render json: JSONAPI::ResourceSerializer.new(ExpectedPaymentResource).serialize_to_hash(ExpectedPaymentResource.new(expected_payments[0], nil)) 

И что работал для 1-й объект в массиве.

documentation говорит: «ResourceSerializer имеет метод serialize_to_hash, который принимает экземпляр ресурса или массив экземпляров ресурсов для сериализации».

Как я могу заставить его работать с массивом экземпляров ресурсов? Я не вижу примеров в документации.

ответ

1

Если вы используете Rails. Попробуйте активировать active_model_serializer, который обеспечивает согласование конфигурации с вашим поколением JSON.

https://github.com/rails-api/active_model_serializers

Йон может остановить обижают, как вы можете сгенерировать ответ JSON, как только вы начнете использовать AMS.

Ниже получают руководство для AMS,

https://github.com/rails-api/active_model_serializers/blob/master/docs/general/getting_started.md

+0

Хотя эта ссылка может ответить на этот вопрос, то лучше включить основные части ответа здесь и предоставить ссылку для справки. Ответные ссылки могут стать недействительными, если связанная страница изменится. - [Из обзора] (/ review/low-quality-posts/18870835) – grizzthedj

Смежные вопросы