【问题标题】:Rails 3 redirect to external page with parametersRails 3 使用参数重定向到外部页面
【发布时间】:2013-07-21 06:59:25
【问题描述】:

我有这个链接:

railsapp/api/details.php?id=1&app=dvd 

我需要重定向到外部非 Rails 服务器中的另一个页面:

non-railsapp/api/details.php?id=1&app=dvd 

如果我把它放在 routes.rb 文件中:

  match '/api/details.php' => redirect("non-railsapp/api/details.php")

重定向会起作用,但不会传递参数。需要什么魔法才能使参数也被传递?

事实上,如果能够使用所有参数将/api/ 之后的所有内容重定向到外部站点,那就太好了。那会让我的生活轻松很多。

我已阅读有关 Rails 路由的文档,但找不到任何此类示例。

谢谢。

【问题讨论】:

    标签: ruby-on-rails redirect routes ruby-on-rails-3.2


    【解决方案1】:

    您可以执行以下操作:

    url = URI("http://www.google.com/")

    url.query = URI.encode_www_form(:q => "query")

    #重定向到http://www.google.com/?q=query

    redirect_to url.to_s

    【讨论】:

      【解决方案2】:

      试试这样的:

      get "/api/details.php/:id/:app" => redirect{ |p, req| "non-railsapp/api/details.php/#{p[:id]}/#{p[:app]}" }
      

      编辑

      您也可以将参数设为可选:

      get "/api/details.php(/:id(/:app))" => redirect{ |p, req| "non-railsapp/api/details.php(/#{p[:id]}(/#{p[:app]}))" }
      

      【讨论】:

      • 不幸的是,这会导致以下错误:No route matches [GET] "/api/details.php"。我花了很多时间试图弄清楚这一点。
      • 不,参数绝对不是可选的。此外,将参数设为可选参数并不能解决错误是关于 details.php 页面没有路由的事实。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2013-03-11
      • 1970-01-01
      • 2021-07-23
      • 2016-03-27
      • 1970-01-01
      • 1970-01-01
      • 2019-12-14
      相关资源
      最近更新 更多