0

我正在开发一个允许用户访问根 url 的应用程序,如下所示: http://localhost:3000/param_here

我的路线设置如下:

match '/:test' => redirect { |params| "/?id=#{params[:test]}" }

这样做的问题是我的其他路线也被拾取并被重定向。

全路由.rb

Myapp::Application.routes.draw do
  match '/:test' => redirect { |params| "/?id=#{params[:test]}" }
  match '/aboutus', to: 'pages#aboutus', as: "about_us"

  # Set the Home Page to a static page  
  root :to => 'pages#home'
end

因此,如果用户转到/aboutus,重定向会选择它并假定它应该设置为id. 我仍然想使用常规路线来实现此重定向

4

2 回答 2

2

您是否尝试过将 /aboutus 路由规则移到

  match '/:test' => redirect { |params| "/?id=#{params[:test]}" }

您的路线文件中的规则?

路由从上到下流动,因此如果您将 /about us 路由移动到带有可选参数的路由上方,它应该将您的请求发送到第一个匹配的路由,在这种情况下是 /aboutus 路由

于 2013-01-22T14:53:38.390 回答
1
match '/:test' => redirect { |params| "/?id=#{params[:test]}" }, :defaults => { :id => '#{params[:test]}' }
于 2013-01-22T14:56:46.017 回答