Rails маршрутизация, как я могу ограничить мой маршрут ID?

0

В моем приложении Rails у меня есть путь, который выглядит так: /events/event_name. В файле routes.rb я указываю любой путь, который соответствует /events/:id на тот же контроллер. Однако то, что я хочу сделать, это ограничить :id только выбором (т.е. Только marathon и swimming будут продолжены, а все остальное - до 404). Фактическая обработка id обрабатывается в Angular. Есть ли способ, которым я могу легко ограничить свои маршруты, не перечисляя каждый возможный выбор?

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'

1 ответ

0
Лучший ответ

Вы должны иметь возможность использовать:

get '/events/:id' => 'static_pages#event', constraints: { id: /concessions|football/ }

Этот формат принимает любое регулярное выражение, за исключением того, что вы не можете (и не должны) включать якорь. Смотрите документацию здесь для получения дополнительной информации.

  • 0
    работает отлично! благодарю вас

Ещё вопросы

Сообщество Overcoder
Наверх
Меню