0

나의 이해는이 같은 렌더링 사용할 때 당신은 단지 AMS를 호출 할 수 있습니다 :Order_by 레일 시리얼 변환

render json: foos, each_serializer: FoosSerializer

그러나 무엇 나는 직렬화 된 자원에서 결과에 뭔가를 원하는 경우 직렬화 된 후에? 그게 가능하니? 내 문제는 내 serializer가 리소스의 속성 중 하나를 변형하는 리소스의 메서드를 호출하고 프런트 엔드로 전달하기 전에 해당 특성으로 정렬해야합니다.

ActiveModel::SerializableResource.new(
    foos, 
    each_serializer: FoosSerializer 
).to_json 

내가 다시 JSON을 얻을 수 있지만, 나는 다시 내가에 order_by를 호출 할 수있는 무언가로 변환 할 수 있습니다 :

나는 아래 수행 할 때?

편집 :

나는이 있습니다

JSON.parse(ActiveModel::SerializableResource.new(
     foos, 
     each_serializer: FoosSerializer 
    ).to_json).sort {|x,y| x[:name] <=> y[:name]} 

을하지만 난 아직도 병동 후 분석 결과와 함께 뭔가를 필요로하는 사이에 순서를 호출하기 위해 to_jsonparse를 호출하는 바보 같다.

+0

푸 모음인가? – AnkitG

+0

@AnkitG 예 컬렉션입니다 – stackjlei

답변

1

어떻게 컨트롤러에서 FooSortSerializer

class FooSortSerializer < ActiveModel::Serializer 

    def attributes(_options = {}, _reload = false) 
    object.collect do |foo_instance| 
     FooSerializer.new(foo_instance).attributes 
    end.sort {|x,y| x[:name] <=> y[:name] 
    end 
end 

같은 다른 변압기 시리얼을 만드는 방법에 대해

render json: foos, serializer: FooSortSerializer 
+0

죄송합니다. 이전 질문을 잘못 읽었습니다. foo는 컬렉션이 아닙니다. 이름과 같이 정렬 할 속성이있는 리소스입니다. 그 이름 속성은 serializer에 의해 변환되므로 변환 후 정렬하고 싶습니다. – stackjlei

+0

당신이 제공 한 답은 리소스가 아닌 서로 관련되어 있습니다. – stackjlei

+0

내 문제를보기 위해 업데이트를 참조하십시오. – stackjlei