Rails 3 - 条件路由?

Kom*_*mbo 7 routing ruby-on-rails ruby-on-rails-3

我有关于rails 3的路由问题,并设置条件:根路径.

现在,我的route.rb有以下内容:

root :to => "topics#index"
Run Code Online (Sandbox Code Playgroud)

这很棒,但是只有当用户在我的网站上的特定子域(basecamp样式)上时才会这样.如果他们去www.myapp.com或myapp.com,这应该是不一样的:root.我很想知道这是否完全可以设置,这就像......

if default_subdomain(www, "")
root :to => "promos#index"
else
root :to => "topics#index
end
Run Code Online (Sandbox Code Playgroud)

我知道在routes.rb中不允许这样做,但是会做同样合乎逻辑的事情.有没有人对此有任何经验,或者我可以阅读的任何文档/博客试图设置这样的东西.

谢谢

根据chuck的帮助(感谢一吨),这最终成为我的工作代码:

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

  root :to => "topics#index"
Run Code Online (Sandbox Code Playgroud)

Chu*_*ebs 10

您可以使用:requirements标记来完成此操作.

root :to => "promos#index", :requirements => { :subdomain => "www" }
root :to => "topics#index"
Run Code Online (Sandbox Code Playgroud)

我认为这会奏效.我从来没有遇到过子域/缺少子域的问题.

编辑:执行一些阅读后,Rails 3使用:constraints.