我想指定路线(特别是根路线),具体取决于当前子域。如果子域是
浏览到
当我运行
subdomain
,则我想要路由到controller#action1
;如果子域存在但不是subdomain
或www
,则我想要路由到controller#action2
;如果子域是www
或未给出,则我想要路由到controller#action3
。我尝试了以下内容: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"}
我猜测(仅为猜测),因为有两个没有指定子域的/
路由,所以我的回退路由尝试匹配第二个路由,但是未满足约束条件而失败了?我该怎么做才能使其正常工作呢?