2014-01-18 3 views
0

Sinatra를 사용하여 작은 응용 프로그램을 개발하고 있습니다. 지금까지 그렇게 좋았지 만 정말 작은 문제가 있었는데 왜 이런 일이 일어나고 있는지 이해할 수 없습니다.배열에서 to_json을 호출하면 객체의 to_json을 호출하는 것과 다른 결과가 반환됩니다.

나는 사용자 정의 to_json와 클래스 참고 있습니다

class Note < ActiveRecord::Base 
    #id 
    #name 
    #body 
    #created_at 
    #updated_at 

    def to_json(options={}) 
    { 'id' => self.id, 
     'name' => self.name, 
     'body' => self.body, 
    }.to_json 
    end 
end 

내가 호출하는 경우 :

Note.first.to_json 

그것은 반환

=> "{\"id\":1,\"name\":\"this is the name\",\"body\":\"this is the body\"}" 

내가 배열 내부의 객체를 추가하는 경우 그 배열의 to_json을 호출하십시오.

array = Array.new 
array.push Note.first 
array.to_json 

그것은 반환 : 난 아직도 내가 잘못하고있는 중이 야 무엇 updated_atcreated_at

를 얻을 수 있기 때문에

=> "[{\"id\":1,\"name\":\"this is the name\",\"body\":\"this is the body\",\"updated_at\":\"2014-01-17T22:00:45-03:00\",\"created_at\":\"2013-04-17T21:21:20-03:00\"}]" 

그래서 클래스 Note에서 to_json가 호출 받고되지 않는 이유는 무엇입니까? (btw, 저는 json gem을 사용하고 있습니다)

고마워요.

array = [] 
array << Note.first.to_json 
array.to_json 

답변

3

as_jsonto_json 방법을 바꾸기 해시에 .to_json을 제거하고 작동합니다 :

0

당신은 배열에 추가하기 전에 기록을 직렬화 할 수 있습니다.

def as_json(options={}) 
    { 
    'id' => self.id, 
    'name' => self.name, 
    'body' => self.body, 
    } 
end 
+0

아직 내 질문에 대답하는 내용 :( – Andres

+0

@Andres 미안하지만 오타가 있습니다. 지금보십시오 :) – Agis

관련 문제