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