显示的是对象ID而不是JSON输出

时间:2014-04-09 13:51:19

标签: ruby-on-rails ruby json

我在运行Ruby 1.9.3-p545和Rails 4.0.3的本地机器上输出一个ActiveRecord对象的JSON数组,它使用.json扩展名输出JSON,如果选择.xml也输出xml扩展

当我将此代码部署到使用Rails 4.0.3运行Ruby 1.9.3的弹性beanstalk环境时,会出现问题。

当我将此代码部署到我们的弹性beanstalk环境中时,也会出现问题,该环境在Passenger(独立版)或Puma上运行带有Rails 4.0.3的Ruby 2.0.0。

仅在使用.json:

时输出
"#<ActiveRecord::Relation::ActiveRecord_Relation_CrmOrganisation:0x000000083ad5b0>"

真正奇怪的是,当在两个生产环境中使用.xml时,这种方法非常有效,并且在本地也能很好地工作。

我知道这与所包含的关系无关,因为当删除:include时会产生相同的结果。

这是我的代码:

class ApiCrmOrganisationsController < ApplicationController

  include ApiHelper, ApplicationHelper
  before_filter :authenticate_company
  respond_to :xml, :json

  def index
    @crm_organisations = CrmOrganisation.where('updated_at > ? ', params[:delta]).order('organisation_name ASC').paginate(:page => params[:page]).per_page(params[:quantity].to_i)
    respond_with @crm_organisations, :include => determine_include
  end

end

1 个答案:

答案 0 :(得分:0)

现在这已经解决了,我正在回答帮助未来遇到这个问题的人。

问题在于production.rb文件中的以下标志

production.rb的默认设置:

config.eager_load = true

更改为:

config.eager_load = false

它会完美运作。

开发和生产模式之间存在差异的原因是开发默认设置为:

config.eager_load = false