添加子域约束

Adding subdomain constraint

我目前在 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,就像我想要的那样。

我对这个限制的理解是,您只能通过子域访问 pages#show 操作。但是您也允许使用 resources 方法进行访问。所以约束没有效果。

您并未限制对任何其他控制器的访问。也许您想像这样包装您的路线:

constraints subdomain: '' do
  resources :pages, only: %i[index show create]
end

constraints subdomain: 'pages' do
  get '/:id' =>  'pages#show'
end