2012-04-05 44 views
1

我正在使用葡萄(https://github.com/intridea/grape)與Rails 3,我遇到一個奇怪的問題。XML而不是JSON與葡萄,Rails 3和Heroku

我在我的API類中定義了json作爲默認的輸出格式,我使用as_json方法輸出我的結果。

在我/lib/MyAPI.rb:

class MyAPI < Grape::API 
    prefix 'api' 
    version 'v1', :using => :path, :format => :json, :default_format => :json 

    resource "users" do 
    get do 
     error!("401 invalid token", 401) unless current_user 
    users = User.where('id != ?' , current_user.id) - current_user.friends 
     users.as_json() 
    end 
    end 
end 

在研究與開發模式下,JSON是correclty呈現,但是在Heroku上的XML渲染,而不是JSON。

有人知道爲什麼嗎?

非常感謝。

+0

如果您在本地服務器的生產模式下運行應用程序,是否也有同樣的問題? – shingara 2012-04-05 07:54:48

+0

在本地服務器的生產模式下,它工作正常。看起來問題來自heroku。謝謝你的幫助。 – mathieurip 2012-04-05 08:37:16

+0

您可以在調用API時粘貼您的heroku實例的日誌嗎? – shingara 2012-04-05 08:41:57

回答

3

根據自述文件和代碼。在葡萄0.2.0版本中,default_format不是版本類方法的選項。您需要由您的班級修復它:

class MyAPI < Grape::API 
    prefix 'api' 
    version 'v1', :using => :path 
    format :json 
    default_format :json 

    resource "users" do 
    get do 
     error!("401 invalid token", 401) unless current_user 
    users = User.where('id != ?' , current_user.id) - current_user.friends 
     users.as_json() 
    end 
    end 
end 
+0

我剛剛試過你的建議,但得到以下錯誤:'/Users/mathieuripert/woudu/lib/MyAPI.rb:4:in'格式':無法將符號轉換爲字符串(TypeError)' – mathieurip 2012-04-08 11:16:23

+1

哪個版本的葡萄你使用 ? – shingara 2012-04-08 19:38:39

+0

版本0.1.5 ... – mathieurip 2012-04-08 23:58:04