Rails路由约束不起作用

时间:2012-10-11 20:18:16

标签: ruby-on-rails ruby-on-rails-3 ruby-on-rails-3.2 routes

我希望匹配以/company/开头的所有网址,因此我有这条路线:

match '/*id' => 'high_voltage/pages#show', :constraints => { id: /^company\/.*/ }

但是约束没有做任何事情。 URL /abc也匹配此路由,PagesController会引发错误。

我该如何指定?

我需要id参数在开头包含company/,所以请不要说只是制作路线match '/company/*id'。这将为控制器提供id参数而不包含company/

更新 :我在普通的Ruby中尝试过上面的正则表达式并且它可以运行。我也试过没有在公司面前的^(虽然我确实需要公司成为第一个词),但没有运气。

更新2 :似乎问题在于通配符,通配​​符路由是否与约束一起使用?当路线中有通配符时,我无法获得任何约束。

更新3 :原来这只是一个bug in Ruby on Rails

2 个答案:

答案 0 :(得分:2)

如更新中所述,这是Rails中的一个错误。

答案 1 :(得分:-2)

看起来像语法错误。尝试使用:constraints => {:id => /^company/.*/}

编辑:我刚认为ruby v 1.9.2