2011-06-19 89 views
2

我期待有一個通過AJAX創建/更新的模型。你如何在Ruby on Rails中做到這一點?如何從Ruby on Rails輸出JSON?

此外,更具體地說:您如何在RoR中輸出JSON?

def create 
    response = {:success => false} 
    @source = Source.new(params[:source]) 
    if @source.save 
    response.success = true 
    end 
    render :json => response.to_json 
end 

回答

6
所有你需要做的就是調用渲染

:JSON與對象,像這樣:

render :json => my_object 

對於大多數對象,這只是工作。如果它是一個ActiveRecord對象,請確保查看as_json以查看它是如何工作的。對於上面說明的情況,您的散列將被轉換爲json並返回。

但是,你有一個錯誤:你不能訪問通過response.success成功的關鍵 - 你應該做的,而不是響應[:成功]

2

jimothy的解決方案是真正的好布提相信它不是在可擴展性長遠來看。 Rails是一個模型,視圖和控制器框架。現在,JSON在默認導軌中被視爲出了問題。然而,有一個叫做RABL的好項目允許JSON視圖。我寫了一些論點,爲什麼我認爲這是一個很好的選擇,以及如何快速啓動並運行它。看看這對你有用:http://blog.dcxn.com/2011/06/22/rails-json-templates-through-rabl/

+1

+1在RABL上。我一直在使用它在我的第一個真正的RoR項目(一個API服務)上,它工作得很好。目前唯一的問題是使用序列化日期時間對象,並且在RABL github讀取文件中添加了解決方法。 –

+0

是啊!這對於可縮放應用程序來說更有意義。 –

0
@source = Source.new(params[:source]) 

respond_to do | f | 
    f.html { 
    # do stuff to populate your html view 
    # maybe nothing at all because @source is set 
    } 

    f.any(:xml, :json) { 
    render request.format.to_sym => @source 
    } 
end