5
使用Sinatra路由时,如何在路由的相同部分同时存在所需的命名参数和可选的命名参数。Sinatra路由的必需参数和可选参数
可选路径参数工作正常这里
get '/widgets.?:format?'
但是,尝试将需要命名放慢参数结合起来,事情打破。
get '/widgets/:id.?:format?'
请求/widgets/abc.json传递整个abc.json作为id参数。
的西纳特拉编译正则表达式是:“”
/^\/widgets\/([^\/?#]+)(?:\.|%2E)?([^\/?#]+)?$/
这是因为用于匹配':id'的正则表达式很贪婪,但是向其余的添加'?'使得它们不合格。请打开[问题](https://github.com/sinatra/sinatra/issues/new),我可能会解决这个问题。 – 2012-03-21 14:48:27