【问题标题】:Why do i get a circular reference exception when calling to_json on an ActiveRecord::Relation为什么在 ActiveRecord::Relation 上调用 to_json 时出现循环引用异常
【发布时间】:2010-05-10 22:45:25
【问题描述】:

在 Rails 3(1.8.7 上的 beta 3)中,当对关系调用 to_json 时,我得到一个循环引用异常。首先将该关系转换为数组,然后调用 to_json 即可。

失败的代码:

Model.where().to_json(其中模型是 Rails 3 应用程序中的任何模型)

有效的代码:

Model.where().to_a.to_json

这可以在控制台上重现。

还有其他人遇到过这种情况吗?这是预期的吗?

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3


    【解决方案1】:

    我也遇到过这个。看起来它已在此提交中解决:

    http://github.com/rails/rails/commit/eb04408a20628a49296e0859425940b39a83ec63

    【讨论】:

      【解决方案2】:

      我遇到了同样的问题,无法解决,但找到了避免它的方法,方法如下:

      respond_to do |format|
        response = @product.to_xml
        format.xml  { render :xml  => response }
        format.json { render :json => Hash.from_xml( response ).to_json }
      end
      

      这里的想法是生成响应的 XML 格式,然后对其进行 Hash,然后将其格式化为 JSON。

      这种方法给了我超出预期的结果,因为现在 JSON 格式的结果与 XML 格式的结果具有完全相同的数据。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-12-03
        • 2010-11-30
        相关资源
        最近更新 更多