有什么方法可以在 rails 运行时对 URL 进行编码吗?

Is there any way to encode the URL at runtime in rails?

在我的 rails 应用程序中,我有搜索功能。用户可以直接在 URL 中输入搜索字符串。如果用户输入搜索字符串 '%',则 URL 变为:

http://localhost:3000/search/% 

这会产生 Bad Request 错误。是否有任何选项可以在运行时对 URL 进行编码?

您提出的问题实际上并不能解决您描述的问题。是的,Rails 可以在运行时编码一个 URL,实际上它在正常运行时会在运行时编码许多 URL。

但是,这对您没有帮助,基本上发生的事情是,当您的用户创建一个带有 % 的 URL 时,他们实际上是在创建一个无效的 URL - 不仅适用于 Rails,还适用于任何 Web 服务器、Web 应用程序服务器或框架。

如果您仔细查看浏览器返回的错误,它甚至不是来自 Rails,而是来自 WEBrick(或您正在使用的任何 httpd),与将出现的错误相同记录到您的日志中,这不是路由或其他地方的正常 Rails 错误。

所有这一切的结果是,不,你不能在 Rails 中处理这个,因为在许多情况下它甚至无法到达 Rails,而且它只是一个完全无效的URL.