7

我正在做一些安装引擎的实验。首先,我需要你的意见,是否是一个好主意,我们在应用程序中将“大块模块”称为“可挂载引擎”。在子域上安装引擎Rails 3.1

我尝试这样做它的伟大工程,在安装系统时,我们可以访问应用程序的模式在全球和应用,我们可以用模块前缀访问发动机的车型。所以它对我很好。

现在来到原题:

我想要的发动机安装到一个子域,使之与特定子域的每个请求应该由具体的引擎中投放。我用这个代码。

root :to=>'dashboard#index' 
scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 

在这种情况下mydomain.comadmin.mydomain.comdashboard controller。如果我改变这样的

scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 
root :to=>'dashboard#index' 

喜好在这种情况下mydomain.comadmin.mydomain.comengine specific root controller

我们如何能做到这一点的情况,并在特定子域装配的发动机?

回答

11

我用路由条目完成该任务:

scope :subdomain => 'www' do 
    root :to=>'dashboard#index' 
end 
scope :subdomain => 'admin' do 
    mount MyAdmin::Engine => '/' 
end 
+0

如果我希望能够在两个foo.com和www.foo.com访问我的域名foo.com? 上述更改无法从foo.com加载内容。 – jkndrkn 2013-05-15 20:41:00

+0

请参阅上面的@samuelkobe答案。 – 2013-05-16 13:45:10

+0

在子域中不能使用正则表达式吗? 例如范围:subdomain =>/^ $ | www/do ... – 2013-09-20 08:17:51

5

使用Rails 3.2.12工作和Ruby 1.9.3-194我来到了一个不同的解决方案,同时本地工作以避免WWW。子域问题,同时允许在某个子域中存在引擎。

get "home/index" 

constraints :subdomain => 'store' do 
    mount Spree::Core::Engine, :at => '/' 
end 

root :to => 'home#index' 

我可能完全是错误的,但它的工作至今。

+0

非常有用!使用'mount Spree :: Core :: Engine =>'/''可以使mount指令更短 – Epigene 2015-04-01 07:38:37