处理Rails ActionController::BadRequest

5
因此,访问http://localhost:3000/%ED会引发ActionController :: BadRequest错误。
但是我真正想要的是返回一个404页面(像大多数网站一样)。
例如,Twitter会显示以下内容:

一个或多个参数中有无效的Unicode值 /%ED

而我在开发环境中得到了这个错误(在生产环境中得到了500错误页面):

going to localhost:3000/%ED

我尝试了明显的rescue_from,但是错误甚至没有进入我的应用程序,因为它是在路由堆栈中引发的。
有任何想法吗?我想过使用中间件,但不知道该如何实现?

你想要做的是能够在routes.rb中重定向到404页面。这可能会有所帮助:https://dev59.com/7mIk5IYBdhLWcg3wBqGW - Ege Ersoz
谢谢,那么我需要使用 config.exceptions_app = self.routes 吗?但是这样我如何知道我得到了404还是500?它是否仍会报告异常?此外,那可能是一个坏主意,因为如果我的应用程序中存在错误,尝试使用我的应用程序可能会产生更多错误? - Dorian
我在这里添加了一个类似问题的答案:https://dev59.com/RmAg5IYBdhLWcg3wG3_O#26227688 基本上,我有一个中间件捕获错误并返回一个400错误页面。 - complistic
我其实是通过使用 utf8-cleaner 找到了答案:https://dev59.com/v4Hba4cB1Zd3GeqPTp5e#26242215 我强烈推荐它 ;) - Dorian
1个回答

6

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接