我希望匹配以/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。
答案 0 :(得分:2)
如更新中所述,这是Rails中的一个错误。
答案 1 :(得分:-2)
看起来像语法错误。尝试使用:constraints => {:id => /^company/.*/}
编辑:我刚认为ruby v 1.9.2