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



我想路由主站点并排除带有数字的路径(如帐户ID)。

例如

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

有以下代码,但是在转到任何约束 url(如 domain.com/signup)时,我得到"没有路由匹配 [GET] '/signup'"。我得到主页很好(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
...

不知道我在这里错过了什么。

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

我有一个实际的答案:

将您不想要的路由放在 routes.rb 中执行的路由之上,并将其发送到重定向到主页或类似内容的处理程序。

最新更新