모델을 JSON으로 렌더링 할 때 포함시키고 자하는 가상 속성이있는 모델이 있습니다. 나는이 일을했습니다to_json options [: methods]가 Model.all에서 작동하지 않습니다.
속성의 목록에 내date_string
방법을 추가
def to_json(options={})
options[:methods] ||= [];
options[:methods] << :date_string;
super(options);
end
가 JSON을 생성 할 때 렌더링 할 수 있습니다.
def show
@project = Project.find params[:id]
respond_to do |format|
format.html
format.json { render :json => @project }
end
end
하지만 인덱스 작업이 date_string
포함되지 않습니다 :
def index
@projects = Project.all
respond_to do |format|
format.html
format.json { render :json => @projects }
end
end
을 내 컨트롤러에서
는 show 액션은 그냥 보통의 속성 인 것처럼 date_string
렌더링, 올바른 결과를 생성
이 작업을 수행 할 수 있는지 누가 알 수 있습니까? 컬렉션을 렌더링 할 때 특정 모델 to_json
을 사용하지 않는 것으로 추측됩니다.
편집 : 어쩌면 지금 as_json
를 사용해야 것 같은데 - 그이 해결되는지 내가 볼 수 있습니다.
편집 2 : 나는 as_json
이 여기에 어떤 차이가 있다고 생각하지 않습니다. 이 모든 직렬화 형식 (즉, JSON 및 XML)에 추가됩니다
def serializable_hash(options)
super(options.deepmerge({:methods => :date_string}))
end
참고 : 가상 필드를 포함하는 serializable_hash
메소드를 오버라이드 (override) 할 수처럼
감사합니다. 나는 전에'as_json'을 시도했지만,'options || = {}'줄을 사용하지 않았습니다 - 그것은 나를 위해 정렬했습니다. 건배 :) – Skilldrick