我想要路由主站点并排除其中包含数字的路径(如帐号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
...
不确定我在这里缺少什么。
答案 0 :(得分:0)
好的,我看到我做错了什么......这是我的正则表达式。我有\D
而不是\d
。我排除了所有号码。哈!
答案 1 :(得分:0)
我有一个实际答案:
将您不想要的路线放在您在routes.rb中所做的路线之上,并将其发送到重定向到家或类似的处理程序。