我想匹配以/company/
开头的所有网址,所以我有这样的路线:Rails的路由约束不工作
match '/*id' => 'high_voltage/pages#show', :constraints => { id: /^company\/.*/ }
但是约束没有做任何事情。网址/abc
也符合此路线,并且PagesController
会引发错误。
我应该如何指定?
我需要id
参数在开始时包含company/
,所以请不要说只做路由match '/company/*id'
。这将给控制器一个id
参数没有company/
。
UPDATE:我没有尝试上述正则表达式在正常Ruby和它的作品。我也试过没有在公司面前(虽然我确实需要公司是第一个字),但没有运气。
更新2:看来问题是通配符,支持通配符路线与约束工作?当路由中存在通配符时,我无法获得任何约束条件。
更新3:原来这是一个简单的bug in Ruby on Rails。
为什么id参数需要'/ company'在里面? –
@RyanBigg - 理由id需要'公司'(没有/在前面)就是thinkbot的高压宝石的工作原理。该ID需要完整的路径。 –
一个(潜在的)问题是您无法将您的正则表达式固定在路由约束中。 Rails *在遇到'^'时应该给你一个错误。说实话?在考虑高电压后,我会抛出这个宝石。它对你做的*很少,以至于不值得销毁你的路由表来使它工作。 Rails已经使静态页面变得非常简单。 – meagar