2016-07-29 4 views
2

레일스를 사용하여 이름, 목록 및 항목과 같은 기본 할일 정보가 포함 된 API를 작성하고 있습니다. 나는이 같은 것을보고, JSON 형식을 반환하려면 : Active Serializer's Github에서Rails 활성 모델 serializer가 json 대신 배열을 반환합니다.

{ 
    "data": [ 
    { 
     "type": "posts", 
     "id": "1", 
     "attributes": { 
     "title": "JSON API is awesome!", 
     "body": "You should be using JSON API", 
     "created": "2015-05-22T14:56:29.000Z", 
     "updated": "2015-05-22T14:56:28.000Z" 
     } 
    } 
    ], 
    "links": { 
    "href": "http://example.com/api/posts", 
    "meta": { 
     "count": 10 
    } 
    } 
} 

이^코드입니다. 그것은 해시의 배열을 반환

[{"id":1,"username":"Iggy1","items":[{"id":1,"list_id":1,"name":"Wash dishes","completed":true},{"id":7,"list_id":1,"name":"Finish this assignment","completed":false}],"lists":[{"id":1,"name":"Important!","user_id":1,"permission":"private"},...

내 로컬 호스트 http://localhost:3000/api/users/, 그것은 보여줍니다. 나는 serializer를 설치할 때 중요한 단계를 놓쳤다. 내 해시 배열을 JSON API 형식으로 다시 포맷하려면 어떻게해야합니까?

나는 getting started guide, renderingJSON API 섹션을 읽었지만 아직 이해할 수 없습니다. 나는 그것을 간과했을지도 모른다.

응용 프로그램/시리얼/user_serializer.rb

class UserSerializer < ActiveModel::Serializer 
    attributes :id, :username#, :email 
    has_many :items, through: :lists 
    has_many :lists 
end 

응용 프로그램/컨트롤러/API/users_controller.rb

def index 
    @users = User.all 
    render json: @users, each_serializer: UserSerializer 
    end 

경로 :

내 코드의 일부

Rails.applic ation.routes.draw do

namespace :api, defaults: { format: :json } do 

    resources :users do 
     resources :lists 
    end 
    end 
end 

내가 더 잘 설명 할 수 있는지 알려 주시기 바랍니다. 감사!!

+2

JSON API 어댑터를 사용하겠다고 선언 했습니까? ActiveModelSerializers.config.adapter = ActiveModelSerializers :: Adapter :: JsonApi'를 설정해야합니다. 지침 [여기] (https://github.com/rails-api/active_model_serializers/blob/master/docs/general/adapters.md#jsonapi) – chrismanderson

+1

효과가있었습니다! 고맙습니다 :). 나는 그것을 어디에 넣어야할지 몰랐다. – Iggy

답변

2

(코멘트에서 응답)

은 JSON의 API 어댑터를 사용하려면, 당신은 당신이 그것을 사용하려는 선언 할 필요가있다.

ActiveModelSerializers.config.adapter = ActiveModelSerializers::Adapter::JsonApi 

AMS readme에 따른다.

관련 문제