to_json需要参数吗?在轨道内怎么样?

时间:2010-05-14 17:08:40

标签: ruby-on-rails json

to_json是否需要参数?在轨道内怎么样?

我在做myhash.to_json时开始收到错误“错误的参数数量(0表示1)”

不幸的是我不确定这个错误何时开始发生,但我想它与某些版本的rails或json gem有关。我想我的代码(在rails控制器中)使用的是to_json的ActiveSupport :: JSON版本,而不是json gem支持的to_josn方法。 ActiveSupport::JSON vs JSON

在environment.rb中我有

RAILS_GEM_VERSION = '2.3.2'

以及

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

这只是一个简单的哈希结构,包含我想在我的控制器中转换的基元,而 正在工作,但现在我似乎无法在不传递参数的情况下运行to_json。

3 个答案:

答案 0 :(得分:0)

你是否在没有采取args的模型中定义了自己的to_json版本?如果是,请接受*argsopts = {}

答案 1 :(得分:0)

如果该版本的导轨中的ActiveSupportto_json为什么要使用宝石? Gem可能重新定义Object#to_json以要求参数,这就是为什么你会收到错误。

查看json Gem的代码,找到定义to_json的位置以验证这一点。

答案 2 :(得分:0)

to_json不需要参数,当您使用rails中提供的版本(ActiveSupport :: JSON)时,错误消息显示它必须尝试调用在中定义的to_josn方法json gem。

所以我的实际困惑源于rails加载这些库的方式。

它将加载json gem并在控制器中使用它,即使我没有说'require json'的行,因为rails加载了environment.rb中定义的gems,所以在事实上,我需要删除该行

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

...来自我的环境.rb。自从我添加之后,我的代码就被打破了。令人困惑的是我需要那个gem,但仅用于我在rails之外做的脚本。