2011-07-29 61 views
0

在我的控制,我有:如何使用Rails中的include選項渲染array.to_json?

def index 
    # Array of Task objects 
    @tasks = Task.get_tasks(current_user, params) 

    respond_to do |format| 
    format.html 

    # Sends correct JSON but not including the 'author' object in it 
    # format.json { render :json => @tasks.to_json(:include => [:author]) } 

    # With this the JSON look correct but is interpreted as a string in the JavaScript code 
    format.json { render :json => @tasks.map { |e| e = e.to_json(:include => [:author]) } } 
    end 
end 

你知道有「乾淨」的解決方案,正確傳遞:include選項時,渲染陣列轉換成JSON?

編輯

我使用MongoDB的

EDIT(2)

我從mongoid (2.0.1)更新爲mongoid (2.0.2)和它的作品。 對不起。

+0

確定嗎?我已經做了一些快速測試,數組似乎很好... – lucapette

回答

3

to_json是多餘的。我只是測試它,並與這裏的一些類似的代碼可使用的語法:

format.json { render :json => @tasks, :include => [:author] }

這是軌道3.0.7。這也假定作者被設置爲任務的belongs_to

+0

太簡單了... :)謝謝。 – wnkz

+0

嗡嗡聲...實際上,這隻適用於數組的第一個對象:/其他對象沒有'author'對象。 – wnkz

+0

奇怪。我的例子有一個巨大的項目列表,並且每個項目都有belongs_to嵌入。 –