1

관련 이메일 개체 및 메시지 개체를 포함하여 사용자의 연락처를 렌더링하는 Rails 3.1 컨트롤러가 있습니다. 연락처 만 렌더링하는 경우 다음을 수행 할 수 있습니다.JSON을 Rails 컨트롤러로 렌더링

 
    @contacts = @current_user.contacts.order('last_name asc', :include => [:emails, :messages]) 
    render json: @contacts, :include => [:emails, :messages] 

위에서 볼 수 있듯이 기본 연락처 대신 성으로 연락처를 정렬하려고합니다. 지금은 다른 관련 객체와 함께 사용자 객체를 렌더링해야합니다. 그래서 나는 다음을 시도했지만, 물론 연락처가 적절한 순서에없는 : 나는 as_json documentation에 어떤 도움을 보지 않았다

 
    render :status => 200, :json => { 
     :user => @current_user.as_json(
     :include => { 
      :foos => { 
      :except => :user_id 
      }, 
      :contacts => { 
      :except => :user_id, 
      :include => [:emails,:messages] 
      }, 
      :bars => { 
      :except => :user_id 
      } 
     } 
    ) 
    } 

, 나는만큼 오른쪽 구문을 찾을 수 없어 시행 착오.

답변

1

이 경우 Ruby/SQL에서 연락처를 주문하고 as_json 및 다양한 :include/:except 메서드를 사용하는 대신 렌더링 할 JSON을 직접 작성합니다.

데이터 해시를 작성한 다음 렌더링을 보내기 위해 보내십시오.

JSON을보다 쉽게 ​​만들 수있는 모든 종류의 라이브러리가 있습니다. JBuilder은 그러한 라이브러리 중 하나입니다. 다른 유사한 라이브러리에 대한 링크는 JBuilder 페이지 하단을보십시오.

+0

[json_builder] (https://github.com/dewski/json_builder)를 사용하여 끝났습니다. 정확히 내가 무엇을 찾고 있었는지. 추가 된 투명도는 말할 것도없고 내 렌더링 시간을 약 55 % 줄였습니다. –

관련 문제