2010-04-02 5 views
9

에 연결을 '포함'. 결과 [0] .staff.inpsect를 수행하는 경우 물론 직원 데이터를 가져옵니다.변환하는 방법 기록은 JSON

문제는 직원 행을 포함하여 JSON으로 AJAX로 반환하고 싶습니다. 직원 행을 포함 시키려면 어떻게해야합니까? 아니면 수동으로 루프를 만들고 무언가를 만들어야합니까?

def show 
    @appointment = Appointment.find(:all, :include => :staff) 
    respond_to do |format| 
    format.html 
    format.js { render :json => @appointment.to_json(:methods => [:staff]) } 
    end 
end 

답변

21

:includeto_json하지 find에 대한 인수입니다 :

+5

: include는 ActiveRecord :: Base # find 및 ActiveRecord :: Serialization # to_json에 대한 인수입니다. 이들은 #find (: include)가 두려운 N + 1 쿼리 대신 하나 이상의 SQL 쿼리에서 관련 데이터를로드합니다. #to_json (: include)은 반환 된 JSON 객체에 포함 할 하나 이상의 연관을 표시합니다. #to_xml도 같은 방식으로 작동합니다. –

+0

@AlexKorban 감사합니다! 스탭이 JSON에 포함시키고 자하는 부모를 유사하게 가지고 있다면 어떻게 포함시킬 것인가? 기본적으로 나는 얻고 싶다 : '@appointment.staff.manager.name – BKSpurgeon

1

체크 아웃 ActiveRecord::SerializationActionController::Base ("렌더링 JSON"절을 참조하십시오). 컨트롤러에서해야 할 일은 다음과 같습니다.

def return_json 
    @appointment = Appointment.find(:all) 
    respond_to { |format| 
    format.json { render :json => @appointment.to_json(:include => :staff) } 
    } 
end 

이 기능을 사용하려면 약속과 직원 간의 연결을 설정해야합니다.

관련 문제