如何约束RAILS 4路由以排除其中包含整数的所有路径?

时间:2014-01-04 03:04:36

标签: ruby-on-rails ruby-on-rails-4 routes

我想要路由主站点并排除其中包含数字的路径(如帐号ID)。

例如,我想限制一个网址,例如domain.com/about_us或domain.com/signup/plan/1 但是排除所有以整数开头的路径,例如domain.com/1234573/user/3或domain.com/123456

我有以下代码,但在转到任何限制网址(例如domain.com/signup)时,我得到“无路由匹配[GET]'/注册'”。我的主页很好(domain.com)。

class MainSite
  # Match only non account pages
  # urls like domain.com/signup
  # BUT NOT like domain.com/2342342
  def self.matches?(request)
    not request.path =~ %r{\A\/\D}
  end
end

Myapp::Application.routes.draw do

devise_for :app_admins
mount RailsAdmin::Engine => '/app_admin', :as => 'rails_admin'

  # Routes for the public site
  constraints MainSite do
    # Homepage
    get '/' => "content#index"
    get '/signup' => 'accounts#plans', :as => 'plans'
    ....
  end

  root :to => "accounts#dashboard"
  devise_for :users
...

不确定我在这里缺少什么。

2 个答案:

答案 0 :(得分:0)

好的,我看到我做错了什么......这是我的正则表达式。我有\D而不是\d。我排除了所有号码。哈!

答案 1 :(得分:0)

我有一个实际答案:

将您不想要的路线放在您在routes.rb中所做的路线之上,并将其发送到重定向到家或类似的处理程序。