作为JSON响应返回错误

时间:2014-11-19 10:02:05

标签: ruby-on-rails ruby json

问题很简单:从控制器返回错误作为JSON响应:

//controller
def action1
   # .....
   return render(json: { status: :unprocessable_entity }) if !is_my_valid?
   # .... doing something
   render(json: my_hash.to_json)  

end
//view
$.ajax({
  url: 'some_url',
  //...
}).done(function(data) {
  // it always gets here even in case of an error

}).fail(function(jqXHR, textStatus) {
  alert("error: " + textStatus);
});

所以问题是在HTML页面上,即使出现错误,也会执行.done()中的回调函数,而不是.fail()中的回调函数。如何将其变为.fail()

1 个答案:

答案 0 :(得分:2)

发回500 HTTP状态代码:

render(json: { ... }, status: 500)