2011-03-15 129 views
7

我有一個關於rails 3的路由問題,並設置了一個條件:根路徑。Rails 3 - 有條件路由?

現在,我的route.rb有以下幾點:

root :to => "topics#index" 

這是偉大的,花花公子,但僅當用戶在我的網站上的特定子域(大本營風格)。如果他們去www.myapp.com或myapp.com,這應該是不一樣的:根。我不知道這是設置,這東西會像在所有可能的...

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

我知道這不會在routes.rb中被允許的,但一些會做同樣順理成章的事情。有沒有人有任何這方面的經驗,或任何我可以閱讀的文檔/博客,試圖設置這樣的事情。

感謝

每盤下方的幫助(感謝一噸),這結束了我的工作代碼:

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

    root :to => "topics#index" 

回答

10

您可以使用:requirements標籤來做到這一點。

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

我認爲這將起作用。我從來沒有遇到過子域/缺少子域。

編輯:在做了一些閱讀後,Rails 3改爲使用:constraints

+0

是否有某種方法可以列出param'email'必須存在的約束條件?正如在'/url.com?email = emailaddress'中一樣,如果電子郵件存在則按一種方式路由,而如果電子郵件不存在則以另一種方式路由? – finiteloop 2012-06-28 21:14:13