2010-05-28 46 views
1

我正在嘗試使用Rails,並想知道需要什麼來允許/添加對JSON請求的支持?向Rails應用程序添加JSON支持

我的Rails 2.3.5的香草安裝,默認的腳手架似乎爲HTML & XML請求提供支持,但不JSON

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

你這樣做:

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

這將使默認的ActiveRecord JSON的模型

易用的選項,你可以寫它接受格式對象和對象的私有方法渲染,然後根據格式渲染不同的東西。例如:

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 2010-05-28 06:22:39

+0

您可以將其添加到默認的腳手架生成器模板。我的答案的第二部分只是一個易用的東西。 – Maz 2010-05-30 17:26:39

相關問題