有人可以建议为什么这两条路线不一样吗
get('/:id/' => 'outlets/play#show', :as => :listen, constraints: { id: /thetrack-a123-bay7623/ } )
get('/:id/' => 'outlets/play#show', :as => :listen, constraints: { id: /thetrack-.*/ } )
我想要实现的只是在有outlets/play#show
开头的:id
时才使用该路由thetrack
。
我发现,如果我明确使用那些字符,即在路由中不使用thetrack
,则不会使用该路由。但是,如果我使用thetrack-.*
,尽管我的请求中没有outlets/play#show
,它仍然会进入thetrack
路由。
有什么想法吗?
我尝试了其他正则表达式模式,例如
thetrack-.+
thetrack-.+-.+
thetrack-.*-.*
没有运气
答案 0 :(得分:0)
如果您要执行的操作是将ID为/:id/
的任何请求thetrack-
路由到outlets/play#show
,则您配置的路由应该有效:
get '/:id/', to: 'outlets/play#show', as: :listen, constraints: { id: /thetrack-.*/ }
以下是一些使用此通配符路由到outlets/play#show
的示例路径:
/thetrack-
/thetrack-a123
/thetrack-a123-bay7623
/:id/
的影响范围很广。检查您是否没有其他冲突的路线。即根级别为/:something/
的另一条路由可能会捕获未指定thetrack-
的其他请求。