Rails将所有的404和500错误返回为JSON

9 浏览
0 Comments

Rails将所有的404和500错误返回为JSON

我在rails中相当新,正在使用rails 4。

在我的应用程序中,我想以JSON格式返回所有的404和500错误,如下所示:

{

"status": 404,

"message": "未找到"

}

有没有简单的方法来做到这一点?因为我只找到了在rails 3.x中实现这个的解决方案。

谢谢。

我尝试使用这个解决方案Need to return JSON-formatted 404 error in Rails但是我得到了错误消息error during failsafe response: uninitialized constant ErrorsController

0
0 Comments

问题原因:Rails默认情况下,当出现404和500错误时,会返回HTML格式的错误页面。但有时我们希望以JSON格式返回错误信息,方便前端处理。

解决方法:可以通过以下两种方式实现全局返回JSON格式的404和500错误。

方法一:

在控制器中使用render :json => _object.to_json, :status => :unprocessable_entity,将对象转换为JSON格式并返回。

方法二:

在ApplicationController中使用

rescue_from StandardError do |exception|
  # render what you want here
end

,捕获所有的标准错误,并在其中编写返回JSON格式的逻辑。

以上两种方法可以在整个应用中实现全局返回JSON格式的错误信息。如果还需要处理路由错误,可以参考这个问题:stackoverflow.com/a/6773038/1571834

0