Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails Rails-在路由中转义URL参数_Ruby On Rails_Ruby_Routing - Fatal编程技术网

Ruby on rails Rails-在路由中转义URL参数

Ruby on rails Rails-在路由中转义URL参数,ruby-on-rails,ruby,routing,Ruby On Rails,Ruby,Routing,我有一个带有路由的rails应用程序: put /soa/orders/:order_id => 'soa/orders#update' 我遇到的问题是,:order\u id是一个字符串,而不是一个整数,通常是一种格式,例如ABC-001。由于空格在URL中无效,因此顺序id是URL转义到ABC+-+001 我希望Rails自动取消对这个参数的设置,就像对其他参数那样,但它似乎没有。我已经通过手动取消它来让它工作了,但我想检查是否有人知道,这是故意的行为,还是它只在特定情况下起作用?H

我有一个带有路由的rails应用程序:

put /soa/orders/:order_id => 'soa/orders#update'
我遇到的问题是,
:order\u id
是一个字符串,而不是一个整数,通常是一种格式,例如
ABC-001
。由于空格在URL中无效,因此顺序id是URL转义到
ABC+-+001


我希望Rails自动取消对这个参数的设置,就像对其他参数那样,但它似乎没有。我已经通过手动取消它来让它工作了,但我想检查是否有人知道,这是故意的行为,还是它只在特定情况下起作用?

Hm,我很惊讶它没有被转义为
ABC%20-%20001
,这将正确地“自动转义”。参数是如何转义的,具体在哪里转义的?可能有一些问题。它是一个API,包含由外部系统发出的请求,在需要时可以转义参数。我需要再次检查它的用途!也许API正在用加号替换空格,而不是转义空格。也许API的惯例是这样做,而不是尝试“按原样”编码参数。看起来外部应用程序中存在错误-允许使用加号而不是%20,但只允许在查询字符串部分使用加号。我没有意识到这种区别,显然其他应用程序(以及许多其他系统)也没有。