2011-03-15 117 views
7

我有一个关于rails 3的路由问题,并设置了一个条件:根路径。Rails 3 - 有条件路由?

现在,我的route.rb有以下几点:

root :to => "topics#index" 

这是伟大的,花花公子,但仅当用户在我的网站上的特定子域(大本营风格)。如果他们去www.myapp.com或myapp.com,这应该是不一样的:根。我不知道这是设置,这东西会像在所有可能的...

if default_subdomain(www, "") 
root :to => "promos#index" 
else 
root :to => "topics#index 
end 

我知道这不会在routes.rb中被允许的,但一些会做同样顺理成章的事情。有没有人有任何这方面的经验,或任何我可以阅读的文档/博客,试图设置这样的事情。

感谢

每盘下方的帮助(感谢一吨),这结束了我的工作代码:

constraints(:subdomain => "www") do 
    root :to => "promos#index" 
    end 

    root :to => "topics#index" 

回答

10

您可以使用:requirements标签来做到这一点。

root :to => "promos#index", :requirements => { :subdomain => "www" } 
root :to => "topics#index" 

我认为这将起作用。我从来没有遇到过子域/缺少子域。

编辑:在做了一些阅读后,Rails 3改为使用:constraints

+0

是否有某种方法可以列出param'email'必须存在的约束条件?正如在'/url.com?email = emailaddress'中一样,如果电子邮件存在则按一种方式路由,而如果电子邮件不存在则以另一种方式路由? – finiteloop 2012-06-28 21:14:13