47

当我

  render json: {
    error: "No such user; check the submitted email address",
    status: 400
  }

然后做我的测试并检查

response.code

我得到 200 而不是 400

我确信这个荒谬简单的答案,但我一直在寻找一个小时,似乎无法让这个工作。我可以只解析 Json,然后检查状态码……但没有办法让 response.code 返回状态吗?我知道从技术上讲它是成功的,我认为这就是 response.code 返回 200 的原因,但我之前使用的是 Jbuilder,我可以直接影响返回的代码。

4

1 回答 1

102

您已经在那里创建了 json,它将被返回,并且在该 json 中将是状态的标识 - 400。但是,这并没有告诉 Rails 在标头中发送 400 状态。

你可以这样做:

render json: {
  error: "No such user; check the submitted email address",
  status: 400
}, status: 400

或者类似的东西

payload = {
  error: "No such user; check the submitted email address",
  status: 400
}
render :json => payload, :status => :bad_request

您可以使用符号 :bad_request 或状态号 400。

于 2014-02-20T01:59:05.377 回答