2013-08-14 4 views
2

내 레일 애플 리케이션에서 나는 RABL을 사용하고 있으며 jquery 데이터 테이블을 사용하여 데이터 목록 (실제로는 datatable 지시어로 각도 사용)을 봅니다.jquery와 RABL Datatables

내가 요구 server side pagination을 구현하기 위해 노력하고 있어요 거기 RABL 자체 내에서이 처리에 good thread on a solution하지만 나는 오히려 RABL 결과를 감싸 내 PLC의 기능이있을 것이다 return tree

약간 다른 여분의 매개 변수가 있습니다. 이 방법은 어떻게 든 respond_with (@books) 메서드를 호출하고 단지 foo는의의 JSON 배열을 반환하고이 방법에서 내가 설정할 수있는 반면

내 컨트롤러에서 예를 들어 차라리

respond_with_datatable(@books) 

있을 것 적절한 응답 :

{ 
"sEcho": 1, 
"iTotalRecords": 53, 
"iTotalDisplayRecords": 10, 
"aaData": [book_array] 
} 

단순히 어떤 respond_with (객체)를 수행 내가 호출 할 수있는 방법이 생각하지 않습니다이하는 바로 응답하지 않고 JSON을 캡처합니다. 컨트롤러에 메서드를 사용하면 RABL을 변경할 필요가 없으며 추가 데이터 테이블 형식 및 그렇지 않은 경우를 반환하려는 경우가 있습니다. 제어기를 제어하는 ​​것이 이상적입니다. 어떤 도움을 주셔서 감사합니다!

답변

1

render_to_string을 사용하여 RABL 템플릿을 문자열로 렌더링 한 다음 거기에서 처리 할 수 ​​있습니다. 예를 들어 JSON으로 구문 분석 한 다음 조작하거나 더 큰 JSON 구조에 포함시킬 수 있습니다. 그런 다음 render을 사용하여 새 데이터로 직접 응답 할 수 있습니다.

난 그냥 내 응용 프로그램이 테스트

def index 
    @galleries = Gallery.all # or whatever 
    respond_with_datatable 
end 

def respond_with_datatable 
    template_json = JSON(render_to_string) 
    json = {:new_data => "some new stuff", :orig_data => template_json} 
    render :json => json 
end