我在网上看了一会儿,但我无法让它发挥作用。我们的应用程序必须与ourapp.com/meandyou等网址一起使用,其中公共元素是参数中的“和”。 我看到可以使用正则表达式约束url参数,所以我将规则添加到routes.rb,但没有成功。如果我尝试使用终端匹配相同的表达式,它可以工作。这是完整的路径文件:
Railroot::Application.routes.draw do
resources :couples
get "home/index"
root :to => 'home#index'
match ':url' => 'couples#show_url', :url => /and/
end
我读到Rails在匹配路径时将表达式嵌入到更大的表达式中,所以即使对于这样一个简单的表达式,我也许会做一些稍微错误的事情。
我在Ubuntu 10.04,Ruby 1.9.3,Rails 3.2.3,Passenger 3.0.13,Nginx 1.2.1上运行。
提前感谢您的帮助!
答案 0 :(得分:0)
这应该是你的出发点:
Railroot::Application.routes.draw do
root :to => 'home#index'
resources :couples
match ':url' => 'couples#show_url', :constraints => { :url => /and/ }
end
答案 1 :(得分:0)
这可能是您的答案,来自rails routing docs:
:约束采用正则表达式,但不能使用regexp锚点。 [...] 但请注意,您不需要使用锚点,因为所有路径都在开始时锚定。
所以我认为你实际匹配的不是/and/
而是/^and/
,这可以解释为什么它不起作用。
尝试更明确,如下:
match ':url' => 'couples#show_url', :url => /.*and/