Rails:渲染Json状态问题

时间:2014-02-20 01:56:45

标签: ruby-on-rails json jbuilder

当我

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

然后进行测试并检查

response.code

我得到200而不是400

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

1 个答案:

答案 0 :(得分:73)

你已经在那里创建了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。