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