2012-11-29 56 views
3

我有一個Rails應用程序,它以json格式顯示嵌套窗體。如何在Rails 3中包含附加字段應用程序JSON響應

在JSON響應中,我還顯示了代表另一個表的id字段。

如何顯示與該ID相對應的名稱我得到的名稱使我可以在我的JSON格式中顯示名稱和ID。

我控制器 show方法

def show 
    @maintemplate = Maintemplate.find(params[:id]) 
    respond_with (@maintemplate) do |format| 
     format.json { render :json => @maintemplate } 
    end 
    end 

在此先感謝....

+0

我不知道我理解你的問題,但'render:json => @maintemplate.to_json'怎麼樣? –

+0

我得到的Json格式相當好,問題是,在我的JSON格式我顯示一個ID字段(例如:「user_id」:「12」),它對應於用戶表。我想以我的json格式包含與此id相對應的名稱(「12」)。如何解決此問題。 – Cyber

+0

好的,發佈了一個答案,見下文。 –

回答

4

試試這個:

render :json => @maintemplate.to_json(:include => { :user => { :only => :name } }) 

這將與user鍵和值替換user_id關鍵只有屬性user,如下所示:

{ 
    "user_id": "12" 
    "user": { "name": "..." } 
    ... 
} 

然後,您可以通過["user"]["name"]訪問json響應中的用戶名。您也可以使用["user_id"]訪問用戶標識。

欲瞭解更多信息,請參閱documentation on as_json

更新:

使用在評論中提供的信息,我認爲這是你真正想要的東西:

render :json => @maintemplate.to_json(:include => { :routine => { :include => :user, :user => { :only => :name } } }) 
+0

我的「@maintemplte」是一個嵌套的窗體輸出。它在「@maintemplate」內有template1數組,模板1有template2數組....我的user_id位於每個template2內。 – Cyber

+0

你能解釋得更清楚嗎?你是什​​麼意思'@ maintempalte'是一個嵌套的表單輸出?這是'find'方法調用的結果,所以它應該是一個模型實例。 –

+0

「@maintemplate」是一個模型實例,它包含「days」array.Days數組具有「routine」數組。所有這些都來自不同的模型(days,routine,maintemplate)。「maintemplate」model id having day_id and routine_id 。常規模型是有user_id(即以json格式顯示爲許多其他字段的輸出)。此user_id對應於具有名稱,年齡等的用戶表。我想將此名稱也包含在此json輸出中對應於user_id我越來越。 – Cyber

1

添加到as_json方法與附加方法的屬性你想要的你在打電話的課程。

class MainTemplate 
    ... 

    def name 
    User.find(self.user_id).name 
    end 

    def as_json(options = {}) 
    options[:methods] = :name 
    super(options) 
    end 

end 
相關問題