2016-08-03 3 views
0

"예쁜"형식의 JSON API를 표시하려고합니다. 나는 Active Model Serializers를 대부분 사용하고있다. 나는 JSON.pretty_generate() 메서드를 사용하여 JSON 디스플레이를 "가장 좋아"할 수 있다는 것을 배웠다.json 형식으로 목록 만들기

것은 내가 더미 데이터를 사용하여 테스트 한 브라우저에 근무 :

def index 
#@users = User.all 
my_object = { :array => [1, 2, 3, { :sample => "hash"} ], :foo => "bar" } 
render json: JSON.pretty_generate(my_object) 
end 

로컬 호스트 :

#=> { 
    "array": [ 
    1, 
    2, 
    3, 
    { 
     "sample": "hash" 
    } 
    ], 
    "foo": "bar" 
} 

내 목표는 인덱스에 사용자 정보의 목록을 표시하는 것입니다. 현재는 들여 쓰기와 줄 바꿈이없는 ... 글쎄, 그것은 꽤 보이지 않는 :

사용자 컨트롤러 :

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

로컬 호스트 :

{"users":[{"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"},{"id":8,"name":"Bloc's obligatory list number two","user_id":1,"permission":"private"},{"id":14,"name":"Mandatory list one","user_id":1,"permission":"private"},{"id":15,"name":null,"use... 

을 많이 후 시행 착오, 나는 json의 목록으로 @users를 가져야한다고 생각했다. 증거 - 내가 실행할 때이 :

사용자 컨트롤러 :

def index 
    @users = User.all 
    render json: JSON.pretty_generate(@users), each_serializer: UserSerializer 
end 

로컬 호스트 이 (표시 오류 MSG) 내가에 User.allJSON.pretty_generate()을 적용 할 수있는 방법을

#=> only generation of JSON objects or arrays allowed

사용자 컨트롤러 색인?

+0

난 단지 렌더링 JSON 렌더링 생각 : user.errors, 상태 @ : unprocessable_entity –

답변

0

변환 해시 :

JSON.pretty_generate(@users.to_json) 
0

당신은 json 같은에서 개체를 변환 할 수 있습니다

render json: JSON.pretty_generate(@users.as_json), each_serializer: UserSerializer 

희망, 그것은 당신을 도울 것입니다. JSON에

+1

'.to_a'는 것 이 경우에도 작동 – siegy22

+0

네 말이 맞아! 오류가 "... JSOn 개체 또는 배열"이라고 완전히 잊어 버렸습니다. 어떻게 든 배열에 블랭킹됩니다. 알림 주셔서 감사합니다! – Iggy

+0

Wel는 이제 내 대답을 받아들입니다 ... –

1

to_json 먼저 @users 변환 :

def index 
    @users = User.all 
    render json: JSON.pretty_generate(@users.to_json), each_serializer: UserSerializer 
end 
+0

위의 코드를 사용하여 "JSON 개체 또는 배열의 생성 만 허용됨"오류 메시지가 여전히 표시됩니다. 내가 users.to_a @ 사용하는 경우가 [보여준다 "# <사용자 : 0x007fd749651058>" "# <사용자 : 0x007fd749650f18>" "# <사용자 : 0x007fd749650dd8>" "# <사용자 : 0x007fd749650c98>" , "# <사용자 : 0x007fd749650b58>" "# <사용자 : 0x007fd749650a18>" "# <사용자 : 0x007fd7496508d8>" "# <사용자 : 0x007fd749650798>" ] – Iggy

관련 문제