Rails 3 - 条件路由?

时间:2011-03-15 20:10:29

标签: ruby-on-rails ruby-on-rails-3 routing

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

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

root :to => "topics#index"

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

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

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

由于

Per chuck在下面的帮助(非常感谢),这最终成为了我的工作代码:

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

  root :to => "topics#index"

1 个答案:

答案 0 :(得分:10)

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

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

我认为这会奏效。我从未遇到过子域/缺少子域的问题。

修改:执行一些阅读后,Rails 3会使用:constraints代替。