我当前在route.rb文件中有以下行resources :pages, only: %i[index show create]
接下来,我希望我的用户通过专用子域访问pages#show
。所以我添加了以下行:
constraints subdomain: 'pages' do
get '/:id' => 'pages#show'
end
(我计划保留这两条路线以实现复古兼容性(
它允许用户通过pages.mydevdomain.com/my-page-id访问它当在开发环境中这样做时,我得到以下消息:
To allow requests to pages.mydevdomain.com, add the following to your environment configuration:
config.hosts << "pages.mydevdomain.com"
我已经做了,而且很有效。然而,如果我进入了http://pages.mydevdomain.com
,那么我就可以看到我构建的整个应用程序,这意味着这个子域不仅仅是我想要的pages#show
我对这个约束的理解是,您只能通过子域访问页面#show action。但是您也允许使用resources
方法进行访问。因此,约束没有效果。
您没有限制对任何其他控制器的访问。也许你想这样包装你的路线:
constraints subdomain: '' do
resources :pages, only: %i[index show create]
end
constraints subdomain: 'pages' do
get '/:id' => 'pages#show'
end