2012-04-05 43 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