2012-04-17 123 views
3

假設我有一個Rails應用程序,其中有兩個模型PostComment。一篇文章has_many評論和評論belongs_to一篇文章。
如何覆蓋show操作中的respond_to函數以獲取包含Post屬性和其具有Comment對象的數組的JSON響應?從Rails獲取嵌套的JSON輸出

目前,它是香草Rails的默認:

# posts_controller.rb 
def show 
    @post = current_user.posts.find(params[:id]) 

    respond_to do |format| 
    format.html # show.html.erb 
    format.json { render json: @post } 
    end 
end 
+0

什麼是你的軌道版本? – Vik 2012-04-17 05:59:19

+0

我的rails版本是3.2 – 2012-04-17 06:01:43

回答

2

嘗試使用active_model_serializers的JSON序列化。包含關聯對象很容易,並且通過爲序列化創建不同的文件來分離事物。

例子:

class PostSerializer < ApplicationSerializer 
    attributes :id, :title, :body 
    has_many :comments 
end 
2

您可以覆蓋模型to_json或者您可以使用Jbuilderrabl

+0

[jbuilder](http://github.com/rails/jbuilder)是要走的路。 – sorens 2012-10-11 14:54:55

3

您可以使用Active Record序列化方法來實現這一點。

to_json 

下面的代碼應該工作。

format.json { render json: @post.to_json(:include => :comments) }