在我的Rails应用中,我的路径如下:/events/event_name
。在我的routes.rb文件中,我将/events/:id
下匹配的任何路径指向同一个控制器。但是,我想要做的是限制:id
只选择选择(即只允许marathon
和swimming
继续,其他任何内容都会转到404)。在Angular中处理实际的id处理。有没有办法轻松约束我的路线而不必列出每一个可能的选择?
routes.rb中:
get '/events/:id' => 'static_pages#event', constraints: {id:[ 'concessions', 'football']} #this doesn't work
角度代码:
app.config([
'$routeProvider', '$locationProvider', function($routeProvider, $locationProvider) {
// console.log($routeProvider.$get);
$locationProvider.html5Mode({enabled: true, requireBase: false});
$routeProvider.
when('/events/:id', {
templateUrl: '../templates/eventTemp.html',
controller: 'EventsCtrl'
})
}
]);
编辑:澄清一下,通过“列出所有可能的选择”,我的意思是不必做这样的事情:
get '/events/concessions' => 'static_pages#event'
get '/events/football' = 'static_pages#event'
答案 0 :(得分:0)
你应该可以使用:
get '/events/:id' => 'static_pages#event', constraints: { id: /concessions|football/ }
此格式采用任何正则表达式,但您不能(并且不需要)包含锚点。有关详细信息,请参阅文档here。