Rails Router 设定 constraints subdomain 如何预防存取外层的设定

artone · 2015年08月14日 · 1957 次阅读

先上代码,这是我的 routes.rb 设定:

namespace :admin, path: "/", constraints: { subdomain: 'admin' } do
  get "/" => "dashboard#index"
end

root to: "pages#index"

get "about" => "pages#about"

结果如下:

  • sample.dev 会得到 pages#index
  • sample.dev/about 会得到 pages#about
  • admin.sample.dev 会得到 admin/dashboard#index

问题来了,当访问 admin.sample.dev/about 还是会得到 pages#about

我以为 namespace + constraints subdomain 会形成一个「闭包」,我要怎么防止 admin.sample.dev/about 存取到 pages#about

目前只想到在 namespace 里面覆写一个 get "about" 设定但这样写好丑……来请教有没有其他作法?

2015-0817 自己解答:

把 root 层的设定包到一个 constraints 就解决了:

namespace :admin, path: "/", constraints: { subdomain: 'admin' } do
  get "/" => "dashboard#index"
end

constraints Rootdomain do
  root to: "pages#index"
  get "about" => "pages#about"
end
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请 注册新账号