1
我有一個基於兩個條件的路徑路由,即域和子域是特定的值。問題是有多個可能的子域值工作,但我似乎無法將它們作爲數組或散列傳遞。具有多個值選項的條件路由有條件
map.with_options(:conditions => {:domain => AppConfig['base_domain'], :subdomain => 'www'..'www3'}) do |signup|
signup.plans '/signup', :controller => 'accounts', :action => 'plans'
...[truncated]...
end
上面的例子可以作爲接受WWW,WWW1,WWW2 & www3作爲子域的值。但是,這並不能真正解決我的需求。我需要能夠接受的「值」(什麼),「WWW」和「WWW2」所以我想的東西的延長:
map.with_options(:conditions => {:domain => AppConfig['base_domain'], :subdomain => ['','www','www2']}) do |signup|
這類似於你將如何設置它在ActiveRecord的但對於路線來說似乎並不一樣。
現在有人知道我可以指定三個不連續的值嗎?
我對正則表達式不太熟悉,但是我知道足夠適用於www#,但除了www和www2之外,我還需要它來響應''(無子域)。換句話說,我需要domain.com/signup,www.domain.com/signup和www2.domain.com/signup才能工作。我無法在沒有子域的情況下進行匹配。 – 2010-08-04 20:32:24
正則表達式是如此強大的工具,值得花時間閱讀更多關於它們的內容。有更簡單的方法來測試你的表達式是否工作或不使用'irb',雖然這可能是好的,就像http://rubular.com/我現在想知道的是,如果你不能HTTP重定向www?到規範domain.com以避免所有這些匹配。一個更好的正則表達式可以是:'/ www \ d * | /'在任何情況下都不會匹配。 – tadman 2010-08-05 13:55:34
太棒了!正則表達式正是醫生訂購的! – 2011-11-18 00:38:12