【问题标题】:Does to_json require parameters? what about within rails?to_json 需要参数吗?铁轨内呢?
【发布时间】:2011-02-19 15:14:32
【问题描述】:

to_json 需要参数吗?在 rails 内呢?

在执行 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。

【问题讨论】:

    标签: ruby-on-rails json


    【解决方案1】:

    您是否有自己的to_json 版本在采用参数的模型中定义?如果是这样,让它接受*argsopts = {}

    【讨论】:

      【解决方案2】:

      如果那个版本的rails 中的ActiveSupportto_json为什么要使用gem? Gem 可能将 Object#to_json 重新定义为需要参数,这就是您收到错误的原因。

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

      【讨论】:

      • 谢谢。你是对的,我不想在那个控制器中使用 gem。我对是否尝试使用 gem 感到困惑。不过现在都排序了。
      【解决方案3】:

      to_json 不需要参数,当您使用 rails (ActiveSupport::JSON) 中提供的版本时,该错误消息表明它必须尝试调用定义在json 宝石。

      所以我真正的困惑在于 rails 加载这些库的方式。

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

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

      ...来自我的 environment.rb 。自从我添加代码后,我的代码就被破坏了。令人困惑的是,我确实需要那个 gem,但仅用于我在 Rails 之外执行的脚本。

      【讨论】:

      • ...虽然我仍然对为什么这条线没有破坏我的服务器上的东西,只有在我的本地机器上的东西感到困惑。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多