2014-03-25 23 views
0

親愛的stackoverflow人, 我想降級一個鐵軌項目,以便它可以在沒有任何問題的軌道上運行3。它在最新版本的rails上工作過,但辦公室不想使用這個。我無法重寫這一行:將rails項目降級到Ruby 1.9.3 |有趣的.to_json麻煩

@results = @sessions.to_json(:include => [:orientations, :subtopics, :data_files, :participants, :formats, :comments => {:include => [:user => {:only => [:id, :name]}]}]) 

@sessions當然是一個結果列表。有沒有人知道我可以如何爲這個選項寫一個替代品,這個替代品也可以在老版本的rails上運行?

在此先感謝

親切的問候

+0

您是否收到任何錯誤?如果是這樣,你能否在問題中分享同樣的內容。 –

+0

這僅僅是一個語法錯誤=>和] – dejakob

回答

1

在這裏你去:

隨時to_json是在對象上調用,as_json被調用來創建數據結構,然後該散列編碼爲使用ActiveSupport :: json.encode的JSON字符串。這發生在所有類型上:對象,數字,日期,字符串等(請參閱active_support/json)。

ActiveRecord對象的行爲方式相同。有一個默認的as_json實現可以創建一個包含所有模型屬性的Hash。您應該在模型中重寫as_json以創建所需的JSON結構。 as_json就像舊的to_json一樣,採用選項散列,您可以指定要裝飾包含的屬性和方法。

def as_json(options={}) 
    super(:only => [:email, :avatar], :include =>[:addresses]) 
end 

控制器代碼顯示一個模式應該始終是這樣的:

render :json => @user 

如果你有做任何不尋常的,叫as_json路過你的選擇。

render :json => { :success => true, 
    :user => @user.as_json(:only => [:email]) } 

這個故事的寓意是:在控制器,不要直接調用to_json,允許渲染爲你做的。如果您需要調整JSON輸出,請在模型中覆蓋as_json,或直接致電as_json

立即修復您的代碼以使用as_json - 當您遷移到Rails 3 or Ruby 1.9.3時,您將不必擔心這一點。