2012-02-06 28 views
0

我有一個對象使用:through方法引用另一個對象。Rails顯示方法不返回關聯對象

當我執行「show」方法時,將返回對象的詳細信息,但不返回其關聯的對象。我已經嘗試了包括髮現像這樣的對象:

@recipe = Recipe.includes(:quantities).find(params[:id]) 

但無濟於事。

當我調試的代碼,做

@recipes.quantities 

然後我回到了正確的設置,但集未在默認情況下,JSON返回。我怎麼能這樣做?

+0

澄清你的問題:你所問的是:「當我有關聯的對象,我怎麼檢索對象及其所有關係中,這樣我可以序列化對象的方式和它與json的聯繫?「那是對的嗎? – 2012-02-06 14:56:16

+0

或多或少是的。數量關聯不會在json中發回@recipe – Ger 2012-02-06 14:59:38

+0

我認爲這是預期的行爲。當你將一個對象序列化爲json時,它會序列化該對象,而不是相關的對象。你仍然可以序列化一個對象和它的關係,但是我認爲你需要通過明確地序列化關係對象來做到這一點。 – 2012-02-06 15:04:36

回答

3

在你show方法做這樣的事情

def show 
    @recipe = Recipe.includes(:quantities).find(params[:id]) 

    respond_to do |format| 
    format.html 
    format.json { render json: @recipe.as_json(:include => :quantities)} 
    end 
end 

這實際上是有點隱藏在Rails的來源,但as_json使得爲每一個答案上this question使用更有意義。

文檔:ActiveModel::Serializers::JSON