我想匹配以/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