我编写了一个应用程序,它使用每个用户帐户的子域来隔离环境。所有这些都很好,除了我有一个问题。我不能让www和"都有一个不同于所有其他子域的根路径。
对于所有帐户子域,我有一个根页面:
root :to => "applications#index"
我需要这是所有子域的根页面,除了"one_answers"www"的空白子域。对于www,我在路由中有这个:
constraints(:subdomain => "www") do
root :to => "promos#index"
end
我正在努力的是获得它,所以"也会使用promos#索引作为根路径。如果不是根路径,mywebsite.com会将它们发送到应用程序#索引,这需要登录。这是我不希望用户在第一次访问时看到的内容。
是否有修改此代码以包含mywebsite.com以具有不同的根目录?我试过用"复制代码,但这往往会打乱所有其他子域,不管顺序如何。以下是我的路线文件:
constraints(:subdomain => "www") do
root :to => "promos#index"
end
root :to => "applications#index"
您可以使用实现"matches?"的对象做一些真正的定制工作。下面,如果您是客户子域,我们将设置应用程序#index,如果您不是,则将您发送到promo#index
在您的路线上:
Yourapp::Application.routes.draw do
constraints(SubDomain) do
root :to => "applications#index"
end
root :to => "promo#index"
...
end
然后是子域匹配器文件:
config/ininitializers/sudomain.rb
class SubDomain
def self.matches?(request)
case request.subdomain
when 'www', '', nil, #admin/api/etc could also go here
false
else
true
end
end
end
subdomain.rb也可以生活在lib中(如果它是自动加载的)