Rails路由:通配符和德语变音符号

时间:2014-04-02 16:57:27

标签: ruby-on-rails routing wildcard

我只是为Rails App开发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 ......

经过一些研究后,我发现即像高压这样的宝石也存在同样的问题。

有人有想法解决这个问题吗?无论是告诉Windows发送真正的'ä'还是在轨道端修复它......

更新:

%E4属于ISO-8859-1(ISO Latin 1)字符编码,但Rails路由适用于UTF-8。

所以GET webdav.example.com/Vertr%C3%A4ge的效果非常好。

在发送请求之前,如何让Windows到UTF8编码网址或Rails以正确识别和转换网址?

1 个答案:

答案 0 :(得分:1)

目前最终以这种方式修补ActionDispatch :: Routing :: RouteSet :: Dispatcher:https://gist.github.com/sdhull/9240273

欢迎其他解决方案/讨论:)