2017-03-21 6 views
2

최근 레일스 5 API 전용 애플리케이션에서 작업하기 시작했으며 뿐만 아니라 jsonapi-resources을 포함하여 주어진 요청에 대한 결과를 쉽게 필터링했습니다. 기본적으로 jsonapi-resources 기본 CRUD 기능을 제공하지만, ransack의 검색 매개 변수를 삽입하기 위해 내 컨트롤러의 기본 인덱스 방법을 덮어 쓰기해야합니다레일스 5 API 전용 애플리케이션에서 Ransack 사용하기

class CarsController < JSONAPI::ResourceController 

    def index 
    @cars = Car.ransack(params[:q]).result 
    render json: @cars 
    end 

end 

자,이 잘 작동,하지만 더 이상 jsonapi-resources를 사용

[{ 
    "id": "3881", 
    "attr_1": "some value", 
    "attr_2": "some other value" 
}] 
,536 :

# ORIGINAL OUTPUT STRUCTURE 
{"data": [ 
    { 
    "id": "3881", 
    "type": "cars", 
    "links": { 
     "self": ... 
    }, 
    "attributes": { 
     ... 
    } 
    }] 
} 

기본 레일 JSON 출력 : 출력 수단 JSON 출력을 생성하도록 변경된

이 컨트롤러에서 인덱스 방법을 패치하는 동안 원본 출력 구조를 유지하려면 어떻게해야합니까?

답변

0

보석을 사용하려고 시도하십시오 https://github.com/tiagopog/jsonapi-utils. 귀하의 경우 문제는 다음과 같이 해결됩니다 :

class CarsController < JSONAPI::ResourceController 
    include JSONAPI::Utils 

    def index 
    @cars = Car.ransack(params[:q]).result 
    jsonapi_render json: @cars 
    end 
end 
+0

매력처럼 작동합니다. 팁을위한 Thx! – Severin