2010-05-14 57 views
0

to_json是否需要參數?那麼在鐵軌內呢?to_json是否需要參數?那麼在鐵軌內呢?

我開始錯誤「錯誤的參數數目(0 1)」做的時候myhash.to_json

不幸的是我不知道,當這個錯誤開始發生,但我想它涉及到的一些版本無論是鐵軌還是JSON寶石。我想我的代碼(在軌控制器)使用的ActiveSupport :: JSON版本to_json的,而不是由JSON寶石支持to_josn方法。 ActiveSupport::JSON vs JSON

在environment.rb中我有

RAILS_GEM_VERSION = '2.3.2' 

config.gem "json", :version=> '1.1.7' 

這只是含有我想在我的控制器轉換原語的簡單哈希結構,它工作,但現在我似乎無法運行to_json而不傳遞參數。

回答

0

to_json不需要參數,當你使用電壓範圍內提供的版本(的ActiveSupport :: JSON)這樣的錯誤消息表明,它必須試圖調用的JSON寶石定義的to_josn方法。

所以我的實際困惑來自軌道加載這些庫的方式。

這將加載JSON寶石和控制器中使用它,即使我沒有說行「需要JSON」因爲軌道載荷的寶石在environment.rb中定義的,所以其實我需要刪除線

config.gem "json", :version=> '1.1.7' 

... from my environment.rb。自從我添加該代碼以來,我的代碼已被破壞。令人困惑的我需要那個寶石,但只用於腳本我在軌道之外做。

+0

...雖然我仍然有一個謎團,爲什麼這行不會破壞我的服務器上的東西,只能在我的本地機器上。 – 2010-05-17 09:41:28

0

你有在取ARGS模型定義了自己的to_json版本?如果是這樣,使它在該版本軌已經to_json爲什麼要使用寶石接受*argsopts = {}

0

如果ActiveSupport?該寶石可能重新定義Object#to_json要求論點和這就是爲什麼你得到一個錯誤。

查看json Gem的代碼並找到to_json的定義來驗證這一點。

+0

感謝。你是對的,我不想使用該控制器中的寶石。我對是否嘗試*使用寶石感到困惑。現在所有排序。 – 2010-05-17 09:30:12