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。
答案 0 :(得分:0)
你是否在没有采取args的模型中定义了自己的to_json
版本?如果是,请接受*args
或opts = {}
答案 1 :(得分:0)
如果该版本的导轨中的ActiveSupport
有to_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之外做的脚本。