【问题标题】:ActiveResource error response header doesn't return bodyActiveResource 错误响应标头不返回正文
【发布时间】:2009-05-07 22:16:09
【问题描述】:

我之前问过类似的问题,但没有得到答案,这是一个简短的版本

我有一个用户活动资源模型。我在我的客户上对服务进行了简单的调用

response = User.find(id).put(:activate, :activation_code => activation_code)

如果服务出现错误(即激活码不匹配),我会返回

render :xml => @user.errors, :status => :unprocessable_entity

显然,任何带有activeresource的错误响应都必须由resue处理

rescue ActiveResource::ResourceInvalid

这一切都很好,很花哨,只是初始调用中的响应没有设置。我根本没有该响应的正文,因此永远不会返回@user.errors。我需要什么才能取回正确的对象?除了返回 200。任何“成功”响应代码都会很好地填充响应变量。但总是返回 200 似乎是个错误。

【问题讨论】:

    标签: ruby-on-rails activeresource


    【解决方案1】:

    所以我在救援区有点误会了

    rescue ActiveResource::ResourceInvalid => e
    

    e 被填充。服务返回

    render :xml => @user.errors, :unprocessable_entity
    

    所以 e.response.body 包含错误 xml。然后我在我的客户端只是说

    user.errors.from_xml(e.response.body)
    

    并且用户现在填充了正确的错误。

    【讨论】:

      猜你喜欢
      • 2010-10-15
      • 2020-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-07-20
      • 1970-01-01
      相关资源
      最近更新 更多