0

我在网上看了一会儿,但我无法让它工作。我们的应用程序必须使用像 ourapp.com/meandyou 这样的 url,其中的共同元素是参数中的“and”。我看到可以使用正则表达式来约束 urls 参数,所以我将规则添加到 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 上运行。

在此先感谢您的帮助!

4

2 回答 2

0

这可能是您的答案,来自rails routing docs

:constraints 采用正则表达式,但不能使用正则表达式锚。[...] 但是,请注意,您不需要使用锚点,因为所有路线都在开始时锚定。

所以我认为你实际上匹配的是 not /and/but /^and/,这可以解释为什么它不起作用。

尝试更明确,如下所示:

match ':url' => 'couples#show_url', :url => /.*and/
于 2012-08-04T08:55:58.390 回答
0

这应该是您的起点:

Railroot::Application.routes.draw do
  root :to => 'home#index'
  resources :couples
  match ':url' => 'couples#show_url', :constraints => { :url => /and/ }
end
于 2012-07-21T18:29:24.700 回答