2011-03-21 5 views
4

내보기에서 일부 데이터를 자바 스크립트로 전달하려고합니다. 배열의 객체의 특정 속성 만 필요합니다.레일 3 : JSON에서 객체 배열의 특정 속성 렌더링

json gem이 :only 옵션을 지원하지 않는 것으로 보입니다. 나는 ActiveSupport :: JSON

<script> 
test1=<%=raw ActiveSupport::JSON.encode(@sectionDatas.values, :only => [ :left, :width ])%>; 
</script> 

을 사용하려고하지만 그건 :only을 무시하고 전체 개체를 인쇄합니다.

그때 나는 영리하고 컨트롤러에서 render 방법을 것이라고 생각 :

test2=<%=raw render :json => @sections.as_json(:only => [:left, :width])%> 

을하지만 무기 호 수 : Nilclass 오류를.

나는 또한 나의 모델과 실행 to_json에 넣고하려고 :

include ActiveModel::Serialization::JSON 

def attributes 
    @attributes ||= {'left' => 0, 'width'=>0} 
end 

는 다시,이 속성의 방법을 무시하고 전체 개체를 직렬화.

분명히 간단해야합니다. 내가 뭘 놓치고 있니?

답변

2

select을 사용하여 db에서 객체를 가져올 때 필요하지 않은 열을 필터링 할 수 있습니다.

Item.find(:all, :select => 'DISTINCT fieldname') 

물론 이것은 Rails3 방식이 아닙니다. 여기입니다 :

Model.select(attribute) 

업데이트

당신이 객체와 JSON의 원래 배열하지만 to_json 오버라이드 (override) 할 필요가 필터링 특성을 사용하여 JSON해야 할 경우 방법이 post는 설명

을의 인스턴스

How to override to_json in Rails?

+0

가 내가 이미 가지고있는 데이터를 데이터베이스에 추가 쿼리가 발생하지 않습니다 :또는 ActiveModel::Serialization::JSON 포함되어 있습니까? – bcoughlan

+0

내가 제안한 코드로 그 코드를 대체 할 것으로 가정하고있었습니다. – s84

+0

그래도 전체 개체가 필요합니다. 이미 가지고있는 데이터에 대한 추가 쿼리를 수행하는 데 사용되지 않습니다. 또한 .select에 대한 문서를 찾을 수 없습니다. ActiveRecord의 일부입니까? – bcoughlan

3

배열의 객체를 가정하면 그렇게

test2=<%=raw @sections.to_json(:only => [:left, :width]) %> 
관련 문제