Rails资源不接受点

时间:2014-03-30 00:08:06

标签: ruby-on-rails regex rails-routing

它是嵌套资源的一部分:

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

它应该接受点(因为增加了约束),但它没有(没有路线匹配......)。 我还尝试过另一个正则表达式,如/\d.+/,/.*/或/ [^ /] + / - 结果相同。

还有什么可能导致问题?

应用程序是用Rails 4编写的。

2 个答案:

答案 0 :(得分:1)

尝试将约束调整到此,它应该允许除斜线之外的任何东西:

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

看起来你正在使用你尝试的早期正则表达之一,但是忘了逃避斜线(除非你输入错误)

答案 1 :(得分:0)

我自己解决了这个问题。

我的错误不是仔细研究耙路线。在第三级嵌套路由中,一个元素是成员元素,一个是资源。参数的名称是不同的 - 对于成员元素,它只是一个"名称",对于资源,它是" repo_name"。在约束中,我将其设置为" repo_name" - 所以"名称"不接受这些点。

有点自动化的是当我将约束从{repo_name:/.+ /}更改为{name:/.+/}时,name和repo_name参数都接受了这些点。