在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"