gpt4 book ai didi

ruby-on-rails - 在 Rails 路线约束中匹配双斜线

转载 作者:行者123 更新时间:2023-12-05 00:21:36 26 4
gpt4 key购买 nike

假设我期望一个 url 作为我的路线的一部分 - 可能是一个回调 url 或类似的 - 我可能会使用以下路线:
get '/mymodel/:url', to: 'mycontroller#docallback', url: /.*/
现在我想可以去http://www.myapp.com/mymodel/http://www.google.co.uk/和处理 http://www.google.co.uk/在 mycontroller 中 - 但它被处理为 http:/www.google.co.uk/ (一个斜线)。我该如何纠正?正则表达式是错误的还是我必须设置一些标志?

最佳答案

我不认为“http://www.myapp.com/mymodel/http://www.google.co.uk/”是一个有效的网址。

通常,如果您想将 url 作为参数传递,您可以调用 CGI.escape首先,这将转换 "http://www.google.co.uk/""http%3A%2F%2Fwww.google.co.uk%2F" CGI.escape 会将任何字符串转换为自身的 url-safe 版本,基本上替换在 url 中具有特殊功能的任何字符,如“:/?&”以及空格和其他一些会破坏格式的字符。

所以,你最终会得到一个像

"http://www.myapp.com/mymodel/http%3A%2F%2Fwww.google.co.uk%2F"

这会在参数中通过
params = {:url => "http://www.google.co.uk/"}

请注意这里是如何转义的:Rails 自动*调用 CGI.unescape将参数值放入 params 之前哈希。

但是,这个网址
"http://www.myapp.com/mymodel/http%3A%2F%2Fwww.google.co.uk%2F"

对我来说看起来很奇怪。最好更明确并将其作为 url 本身的命名参数传递,例如
"http://www.myapp.com/mymodel?url=http%3A%2F%2Fwww.google.co.uk%2F"

这将需要对您的路线稍作更改。
* Rails 会这样做,但这可能取决于具体情况。尝试一下。

关于ruby-on-rails - 在 Rails 路线约束中匹配双斜线,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31244500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com