Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.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中是否有url编码点(';';)的函数_Ruby_Url - Fatal编程技术网

在ruby中是否有url编码点(';';)的函数

在ruby中是否有url编码点(';';)的函数,ruby,url,Ruby,Url,我需要发送一封电子邮件作为查询字符串中的参数 我尝试过的标准函数中没有一个能够对“.”(点)进行编码 我可以很容易地自己做一个函数,但我只是想知道是否已经有任何方法 实际上不需要对点进行编码。在url中的?之后,/和没有任何特定的含义。正如塔德曼所指出的,如果路径类似于获取“用户/:电子邮件”,您将遇到点问题。因为rails将点视为分隔符。如中所述,然后需要添加一个约束,如: get "users/:email", to: "users#show", constraints: { email:

我需要发送一封电子邮件作为查询字符串中的参数

我尝试过的标准函数中没有一个能够对“.”(点)进行编码


我可以很容易地自己做一个函数,但我只是想知道是否已经有任何方法

实际上不需要对点进行编码。在url中的
之后,
/
没有任何特定的含义。

正如塔德曼所指出的,如果路径类似于
获取“用户/:电子邮件”
,您将遇到点问题。因为rails将点视为分隔符。如中所述,然后需要添加一个约束,如:

get "users/:email", to: "users#show", constraints: { email: /.*/ }

因此,您不需要转义url中的点。

您可以通过提供正则表达式作为
URI.escape的第二个参数来转义通常不会转义的字符

URI.escape('a@b.c', /\./)
 => "a@b%2Ec"

(请记住,提供您自己的正则表达式会覆盖默认值,因此现在只有
会被编码)

主要问题是,您到底为什么需要对点进行编码?在rails路由中,点是一个有效的分隔符。如果这些方法没有对周期进行编码,那么我认为可以安全地假设它不应该被编码。。。也许你可以用其他方法解决你的问题。也许可以在您的问题中添加一个有问题的路由示例?“在rails路由中,点是一个有效的分隔符”-不在查询字符串中。如果它是类似于
/send/:email
的路由,则您将遇到问题,但
send?email=xxx
将不会出现相同的问题。并不是所有的东西都可以最好地表示为URI路径组件。
URI.escape('a@b.c', /\./)
 => "a@b%2Ec"