【问题标题】:Rails routing: Wildcard and german umlautsRails 路由:通配符和德语变音符号
【发布时间】: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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-01-21
    • 2013-02-09
    • 1970-01-01
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-28
    相关资源
    最近更新 更多