Я пытаюсь указать маршруты (в частности, маршрут root
), в зависимости от текущего субдомена.Я хочу направить на controller#action1
, если субдомен subdomain
;controller#action2
если субдомен присутствует, но нет subdomain
или www
;и controller#action3
, если субдомен www
или не указан.
Я попытался сделать следующее:
MyApp::Application.routes.draw do
scope :constraints => { :subdomain => "subdomain" } do
match "/" => "controller#action1"
end
scope :constraints => lambda {|req| req.subdomain.present? && !%w(subdomain www).include?(req.subdomain) } do
match "/" => "controller#action2"
end
root :to => "controller#action3"
end
Просмотр до subdomain.myapp.com
и other.myapp.com
оба работают как положено (собирается action1
и action2
соответственно).Однако, когда я пытаюсь myapp.com
или www.myapp.com
, я получаю:
Routing Error
No route matches [GET] "/"
Когда я запускаю rake routes
, я вижу
/ {:subdomain=>"subdomain", :controller=>"controller", :action=>"action1"}
/ {:controller=>"controller", :action=>"action2"}
root / {:controller=>"controller", :action=>"action3"}
Так что я предполагаю (предположив), чтопоскольку есть два маршрута для /
, в которых не указан поддомен, мой запасной маршрут пытается соответствовать второму, но затем не удовлетворяет ограничениям и дает сбой?Что я могу сделать, чтобы заставить это работать должным образом?