J'essaie de spécifier des routes (en particulier, la route root
), en fonction de ce que le sous-domaine actuel. Je veux router vers controller#action1
si le sous-domaine est subdomain
; à controller#action2
si le sous-domaine est présent mais passubdomain
ou www
; et controller#action3
si le sous-domaine est www
ou non.Routage pour plusieurs sous-domaines
J'ai essayé les éléments suivants:
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
Parcourir à subdomain.myapp.com
et other.myapp.com
travaillent tous les deux comme prévu (aller action1
et action2
, respectivement). Cependant, lorsque je tente myapp.com
ou www.myapp.com
, je reçois:
Routing Error
No route matches [GET] "/"
Quand je lance rake routes
, je vois
/{:subdomain=>"subdomain", :controller=>"controller", :action=>"action1"}
/{:controller=>"controller", :action=>"action2"}
root/{:controller=>"controller", :action=>"action3"}
donc je suppose que (spéculant) que parce qu'il ya deux voies pour /
qui n » t spécifier un sous-domaine, ma route de secours essaie de correspondre à la seconde, mais ne répond pas aux contraintes et échoue? Que puis-je faire pour que cela fonctionne correctement?