我想路由主站点并排除带有数字的路径(如帐户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 中执行的路由之上,并将其发送到重定向到主页或类似内容的处理程序。