除了一种模式外,我如何在所有路线中使用通配符?
How can I use wildcards in my routes for all of them excepted for one pattern?
我想使用 React-Router 来处理来自访问者部分的大部分页面,同时创建一个单页应用程序。但是,我想确保如果用户键入 /admin
,他不会得到 "redirected" 到 root_path
到目前为止,我只能设法将所有内容传递给通配符或按如下方式制作 "compartiments":
root 'home#index'
# example 1
get '/*path' => 'home#index'
get '/articles' => 'home#articles_index'
# example 2
get '/articles/*all' => 'home#articles_index'
# vain try 1
get '/*path' => 'home#index', except: :admin
# vain try 2
get '/*path' => 'home#index', except: '/admin'
我发现了约束,但我意识到这是为了确保 url 被正确传递(即,整数而不是字符串)但它没有 "blacklist" urls.
有什么想法吗?
提前致谢
为此,您可以使用带约束的通配符段。例如:
# config/routes.rb
Rails.application.routes.draw do
root to: 'home#index'
get '*subroute', to: 'home#index', constraints: { subroute: /(?!admin|login|logout).*/ }
# all another routes below
end
这会将任何请求传递给 home#index
,除非 URL 中有 'admin' 或 'login' 或 'logout'。
我想使用 React-Router 来处理来自访问者部分的大部分页面,同时创建一个单页应用程序。但是,我想确保如果用户键入 /admin
,他不会得到 "redirected" 到 root_path
到目前为止,我只能设法将所有内容传递给通配符或按如下方式制作 "compartiments":
root 'home#index'
# example 1
get '/*path' => 'home#index'
get '/articles' => 'home#articles_index'
# example 2
get '/articles/*all' => 'home#articles_index'
# vain try 1
get '/*path' => 'home#index', except: :admin
# vain try 2
get '/*path' => 'home#index', except: '/admin'
我发现了约束,但我意识到这是为了确保 url 被正确传递(即,整数而不是字符串)但它没有 "blacklist" urls.
有什么想法吗?
提前致谢
为此,您可以使用带约束的通配符段。例如:
# config/routes.rb
Rails.application.routes.draw do
root to: 'home#index'
get '*subroute', to: 'home#index', constraints: { subroute: /(?!admin|login|logout).*/ }
# all another routes below
end
这会将任何请求传递给 home#index
,除非 URL 中有 'admin' 或 'login' 或 'logout'。