Rails 4.2:如果url具有%2f字符,则路由不匹配

时间:2015-02-07 00:34:13

标签: ruby-on-rails routes escaping

似乎当其中一个url或path参数中存在斜杠字符时,即使它已被正确转义,Rails也无法找到路径......

情景如下:

我有这条路线:

get 'request_work_sheet/:item_code/:document_type/:workstation' => 'work_sheets#request_work_sheet'

我尝试创建此链接:

link_to "Document", request_work_sheet_path("CP/121", "master", "WS1")

rails正确生成此网址:

http://localhost:3000/request_work_sheet/CP%2F121/master/WS1

该网址似乎已被转义,但只要我浏览该链接,就找不到该路线:

No route matches [GET] "/request_work_sheet/CP/121/master/WS1"

如果链接没有斜线字符,则找到路线...

有什么想法吗? (非常感谢提前......)

2 个答案:

答案 0 :(得分:0)

它认为item_code=CPdocument_type=121workstation=master,那么你有一个额外的/WS,它不会映射到任何路线。如果你这样做,就不能拥有任何param值。

答案 1 :(得分:0)

我遇到了这个问题,发现我必须在apache2.conf文件中设置“ AllowEncodedSlashes On”设置。在执行此操作之前,apache将阻止URL并返回404(未找到)。它从未到达我的铁轨路线。现在一切都按预期通过。