gpt4 book ai didi

ruby-on-rails - Rails Routing 在查询字符串中有一个 URL

转载 作者:太空宇宙 更新时间:2023-11-03 16:54:50 25 4
gpt4 key购买 nike

所以我需要点击一个像 mydomain.com/proxies/www.msn.com 这样的 url 来完成一些对 API 的 ajax 请求

在我的路线上有

get "/proxies/:url" => "proxies#get"

我在我的 Controller 中

url_contents = Net::HTTP.get(URI.parse(params[:url]))

如果我把/proxies/www 我得到

undefined method `request_uri' for #<URI::Generic:0x3f89508 URL:www>

如果我把/proxies/www.msn.com

我明白了

没有路由匹配 [GET] "/proxies/www.msn.com"

最佳答案

这里有两个不同的问题:

  1. 您正在尝试将没有架构的 URL 视为 HTTP URL。
  2. 您的 /proxies 路由不会像您期望的那样匹配带点和斜杠的 :url

对于第一个,您必须手动添加架构:

url = 'http://' + params[:url]
content = Net::HTTP.get(URI.parse(url))

对于第二个,您可以使用 splat-route 来处理嵌入的斜杠和 :format => false 来防止 Rails 尝试处理 .com,例如,作为一种格式:

get '/proxies/*url' => 'proxies#get', :format => false

如果您使用 :url,Rails 会将嵌入的斜线视为组件分隔符,而这可能不是您想要的。没有:format => false ,Rails 将尝试将 .X(对于任何 X)解释为一种格式(就像 .html.json, ...) 而不是作为 URL 的一部分。

关于ruby-on-rails - Rails Routing 在查询字符串中有一个 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12879446/

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