【发布时间】:2014-04-02 16:57:26
【问题描述】:
我只是在为 Rails 应用程序开发 WebDAV 界面。因此,我将所有 webdav.example.com/path/to/folder 路径路由到 webdav 控制器:
scope controller: 'webdav', constraints: {subdomain: 'webdav'} do
get '*path', action: 'show'
# some more webdav specific routes...
end
一切正常,但对于名为“Verträge”的文件夹,本机 Windows 客户端现在请求 webdav.example.com/Vertr%E4ge,不幸的是,这会破坏 Rails 路由过程,引发 ActionController::BadRequest...
经过一些研究,我发现像 HighVoltage 这样的宝石也有同样的问题。
有没有人想办法解决这个问题?不管是告诉 Windows 发送一个真正的 'ä' 还是在 rails 侧修复它......
更新:
%E4 属于 ISO-8859-1 (ISO Latin 1) 字符编码,但 Rails 路由使用 UTF-8。
所以 GET webdav.example.com/Vertr%C3%A4ge 工作得很好。
如何让 Windows 对 url 或 Rails 进行 UTF8 编码,以便在分派请求之前正确识别和转换 url?
【问题讨论】:
-
我也已经找到了。匹配导致 404 的路径时出现问题。在我的情况下,ActionController::BadRequest 正在引发 --> 400。
标签: ruby-on-rails routing wildcard