2017-01-30 2 views
4

Я обновляю приложение Rails для active_model_serializers 0.10.4, но у меня возникли проблемы с обновлением необходимой функции: возможность добавлять информацию запроса к каждому json-ответу из контроллер.Rails - AMS - добавить ключ к каждому ответу json от контроллера

В AMS 0.9.x Я использовал это, используя default_serializer_options, но эта функциональность исчезла, и, по-видимому, единственный способ добиться этого - это вручную добавить ключ meta в КАЖДЫЙ запрос.

Кто-нибудь нашел обходное решение для выполнения этой работы?

ответ

0

Не могли бы вы дать более конкретный пример того, что вы пытаетесь сделать? Вы можете сделать ApplicationSerializer и установить serialization_scope в :view_context, а затем делать все, что хотите, в сериализаторе. Вы также можете настроить адаптер JSON. Или, если хотите, вы можете добавить модуль к SerializableResource для добавления параметров.

2

в config/initializers/active_model_serializer.rb файла добавьте следующую строку:

ActiveModel::Serializer.config.adapter = :json

В приведенном ниже примере добавим атрибут данных на верхнем уровне, и оказывать @users объекты под data ключ в вашем ответе.

В контроллере:

def index 
    @users = User.all 
    render json: @users, root: "data" 
    end 

Если вы собираетесь для API схемы JSON с мета-тегов и тега данных с объектами для каждого ответа, просто изменить инициализатору на

ActiveModel::Serializer.config.adapter = :json_api

и контроллер

def index 
    @users = User.all 
    @extra_meta = {"totalCount": @users.size} 

    render json: @users, root: "data", meta: default_meta_attributes(@users, @extra_meta) 
    end 

в моей case default_meta_attributes находится в базовом контроллере и объединяет некоторые подробности о запросе типа current_user_id и т. д. с возможностью добавления дополнительных данных в каждый метод.