2014-03-30 33 views
0

這是嵌套資源的一部分:Rails的資源不接受點

resources :repos, path: '/', only: [], param: :name, constraints: { repo_name: /.+/ } do 

應該接受點(因爲添加的限制),但它不(無路由匹配...)。 我也嘗試了另外一個正則表達式,例如/\d.+/,/.*/或/ [^ /] +/- 結果是一樣的。

還有什麼可以導致問題?

應用與Rails編寫4.

回答

0

我已經解決了我自己的問題。

我的錯誤並不是仔細觀察耙路。在第三層嵌套路由中,元素之一是成員元素,另一個是資源。參數的名稱是不同的 - 對於成員元素,它只是一個「名稱」,其中資源是「repo_name」。在約束條件中,我將它設置爲「repo_name」 - 所以「名稱」不接受點。

有點自動的事情是,當我將約束從{repo_name:/.+/}更改爲{name:/.+/}時,名稱和repo_name參數都接受這些點。

1

嘗試調整約束到這一點,應該允許什麼,但一個斜線:

constraints: { repo_name: /[^\/]+/ } 

看起來你是在正確的軌道上的一個你嘗試過的早期正則表達式,但忘了逃避斜線(除非你打錯輸入)

+0

感謝您的回答!您的版本更受歡迎,但似乎它們都正常工作。 – Michal