2014-04-09 55 views
0

我輸出一個JSON數組的ActiveRecord對象,在運行Ruby 1.9.3-p545和Rails 4.0.3的本地機器上,它使用.json擴展名完美輸出JSON,還如果選擇.xml擴展名,則輸出xml。顯示對象ID而不是JSON輸出

當我將這段代碼部署到運行Ruby 1.9.3和Rails 4.0.3的彈性beanstalk環境中時,會出現這個問題。

當我在Passenger(standalone)或Puma上將此代碼部署到運行Ruby 2.0.0的Rails 4.0.3的彈性beanstalk環境中時,也會出現此問題。

輸出是僅此使用以.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 
+0

你在你的觀點定義你的JSON文件? – user3383458

+0

有沒有必要這樣做,如果這是問題,它不會在本地工作。我實際上已經解決了這個問題,只是想回答這個問題:)而且這真是一個蠢事......我的4個小時我想回到紅寶石! – Aaron

回答

0

這是現在解決了,我回答,以幫助誰碰到過這樣的問題,未來的人。

的問題是在production.rb文件

默認設置爲production.rb以下標誌:

config.eager_load = true 

更改爲:

config.eager_load = false 

而且它將很好地工作。

究其原因,開發和生產模式之間的差異,是發展的默認設置是:

config.eager_load = false