2010-05-28 4 views
1

Rails를 실험 중이며 JSON 요청에 대한 지원을 허용/추가하는 데 필요한 것이 궁금합니다.JSON 지원을 Rails 앱에 추가하십시오.

나는 HTML & XML 요청에 대한 지원을 제공하는 것하지만 JSON 레일 2.3.5의 바닐라 설치 및 기본 발판이있다.

class EventsController < ApplicationController 
    # GET /events 
    # GET /events.xml 
    def index 
    @events = Event.all 

    respond_to do |format| 
     format.html # index.html.erb 
     format.xml { render :xml => @events } 
    end 
    end 

    # GET /events/1 
    # GET /events/1.xml 
    def show 
    @event = Event.find(params[:id]) 

    respond_to do |format| 
     format.html # show.html.erb 
     format.xml { render :xml => @event } 
    end 
    end 

... 

나는이 새로운 해요하지만 난의 라인을 따라 각각의 방법에 형식 행을 추가해야합니다 것처럼이 나타납니다 :

format.js { render :js => @event.json } 

이 자동으로 수행 할 수 없습니다? 아마도 어딘가에 내가 업데이트해야 할 템플릿이 있거나 플래그를 설정할 수 있습니까? 또는 아마, 그리고 아마, 나는 보트를 완전히 놓쳤다?!?

답변

3

당신은 할 수 : 모델

사용 편의성이 옵션의 기본 액티브 JSON을 렌더링

format.json {render :json=>@event} 

당신이 형식 객체와 객체를 취하는 개인 방법을 쓸 수 있다는 것입니다 렌더링을 한 다음 형식을 기반으로 다른 것을 렌더링합니다. 예 :

class MyController<ApplicationController 
    def show 
    @event=Event.find(params[:id]) 
    respond_to do {|format| myRenderer(format,@event)} 
end 
    ... 
    private 
    def myRenderer(fmt,obj) 
    fmt.json {render :json=>obj} 
    fmt.html 
    fmt.xml {render :xml=>obj} 
end 
+0

그렇습니다. 그 줄을 추가하면 ... presto!?! 비계가 생성 될 때 모든'respond_to' 블록에'.json' 줄을 포함하도록 프레임 워크를 가져 오는 방법이 있습니까? * 사용자 정의 myRenderer에 대한 주석의 두 번째 부분을 여전히 소화합니다. * – Meltemi

+0

기본 발판 생성기 템플릿에 추가 할 수 있습니다. 제 대답의 두 번째 부분은 사용하기 쉽다는 것입니다. – Maz

관련 문제