Active_Model_Serializers를 사용할 때 수집 렌더링을 사용자 정의하는 방법은 무엇입니까?
-
12-12-2019 - |
문제
active_model_serializers를 사용하여 ember-data 소비를 위해 json으로 컬렉션을 렌더링합니다. 모두 단일 항목을 렌더링 할 때 모두 괜찮지 만 콜렉션 렌더링은 항목 배열로 구성됩니다.
render json: @scenarios, status: :ok
.
는 다음과 같습니다 :
[{"scenario":{"id":4,"name":"My sample scenario"}},{"scenario":{"id":5,"name":"Yet another sample scenario"}}]
.
그러나 나는 얻고 싶습니다 :
{"scenarios": [{"id":4,"name":"My sample scenario"},{"id":5,"name":"Yet another sample scenario"}]}
.
모든 컬렉션 항목, 측면 데이터 등의 루트 키를 얻는 예술 방법은 무엇입니까?(이 문서는 이에 대해 분명하지 않습니다)
편집
현재 시나리오 Serializer는 현재 다음과 같습니다.
.class ScenarioSerializer < ActiveModel::Serializer
attributes :id, :name
end
해결책
최신 버전을 사용해보십시오.AMS는 컨트롤러 이름을 배열의 키로 사용합니다.기본적으로 위에 표시된 것처럼 렌더링해야합니다.
컨트롤러가 ScenaryosController라는 이름이 아닌 경우 다음과 같이 배열의 루트 요소를 강제로 강제로 할 수 있습니다.
render json: @scenarios, root: "scenarios", status: :ok
. 제휴하지 않습니다 StackOverflow