使用根URL上的可选参数进行Rails路由

时间:2013-01-22 14:48:48

标签: ruby-on-rails ruby-on-rails-3 rails-routing

我正在开发一个允许用户转到根网址的应用,如下所示: http://localhost:3000/param_here

我的路线设置如下:

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

问题在于我的其他路线被拾取并被重定向。

Full Route.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。我仍然希望使用常规路线同时实现此重定向

2 个答案:

答案 0 :(得分:2)

您是否尝试将/ aboutus路线规则移至

之上
  match '/:test' => redirect { |params| "/?id=#{params[:test]}" }
路径文件中的

规则?

路由自上而下流动,所以如果你使用可选参数移动路线上方的/我们路线,它应该将您的请求发送到第一条匹配路线,在这种情况下是/ aboutus路线

答案 1 :(得分:1)

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