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

Ruby on rails 如何约束RAILS 4路由以排除其中包含整数的所有路径?,ruby-on-rails,ruby-on-rails-4,routes,Ruby On Rails,Ruby On Rails 4,Routes,我想路由的主要网站,并排除与他们的数字路径(如帐户id) 例如,我想约束一个url,比如domain.com/about\us或domain.com/signup/plan/1 但排除以整数开头的所有路径,如domain.com/1234573/user/3或domain.com/123456 我有下面的代码,但当转到domain.com/signup这样的约束URL时,我会得到“No route matches[get]'/signup'”。我的主页很好(domain.com) 不确定我在这里

我想路由的主要网站,并排除与他们的数字路径(如帐户id)

例如,我想约束一个url,比如domain.com/about\us或domain.com/signup/plan/1 但排除以整数开头的所有路径,如domain.com/1234573/user/3或domain.com/123456

我有下面的代码,但当转到domain.com/signup这样的约束URL时,我会得到“No route matches[get]'/signup'”。我的主页很好(domain.com)


不确定我在这里遗漏了什么。

好的,我知道我做错了什么。。。它在我的正则表达式中。我有
\D
而不是
\D
。我排除了所有的数字。哈

我有一个实际的答案:

将不需要的路由置于routes.rb中的路由之上,并将其发送给重定向到home或类似的处理程序

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
...