Ruby on rails Rails路由如何约束我的路由id?

Ruby on rails Rails路由如何约束我的路由id?,ruby-on-rails,angularjs,Ruby On Rails,Angularjs,在我的Rails应用程序中,我有一个如下路径:/events/event\u name。在我的routes.rb文件中,我将/events/:id下匹配的任何路径指向同一控制器。但是,我想做的是将:id限制为仅选择选项(即,仅允许马拉松和游泳继续,其他任何内容都将转到404)。实际的id处理是以角度处理的。有没有一种方法可以轻松地限制我的路线,而不必列出每一个可能的选择 routes.rb: get '/events/:id' => 'static_pages#event', cons

在我的Rails应用程序中,我有一个如下路径:
/events/event\u name
。在我的routes.rb文件中,我将
/events/:id
下匹配的任何路径指向同一控制器。但是,我想做的是将
:id
限制为仅选择选项(即,仅允许
马拉松
游泳
继续,其他任何内容都将转到404)。实际的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'

您应该能够使用:

get '/events/:id' => 'static_pages#event', constraints: { id: /concessions|football/ }
此格式接受任何正则表达式,但不能(也不需要)包含锚点。有关更多信息,请参阅文档