3
我试图指定路由(具体地说,root
路由),取决于当前的子域。如果子域为subdomain
,我想路由到controller#action1
;到controller#action2
如果子域存在但是不是subdomain
或www
;如果子域是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"}
,所以我猜(猜测),因为有两条路为/
,唐” t指定一个子域名,我的回退路由尝试匹配第二个,但是不符合约束条件并失败?我能做些什么才能正常工作?