Рельсы назвали маршруты + контроллер в качестве параметра
Возможно ли иметь значение контроллера в рельсах с именем route в качестве параметра, который я могу передать во время выполнения, чтобы направить вызов соответствующему контроллеру?
например, map.ride 'ride',:controller => {параметр, определяющий путь некоторого пути},:action => 'ride'
затем во время выполнения я хочу передать имя контроллера, на который должен идти этот вызов. Мои действия делают разные вещи в зависимости от того, на какой контроллер отправляется звонок. Спасибо
2 ответа
Tomas Markauskas ответил правильно, однако, если вы хотите большей гибкости в формате URL, вы можете указать несколько маршрутов и использовать требования к маршрутам, поставив :requirements
на каждой. Маршрут будет совпадать только при соблюдении требований. Например:
map.resources :rides, :path_prefix => '/:option',
:requirements => { :option => /one/ }, :controller => 'one'
map.resources :rides, :path_prefix => '/:option',
:requirements => { :option => /two/ }, :controller => 'two'
а потом:
/one/rides
будет идти к OneController
/two/rides
будет идти к TwoController
Это будет работать:
map.ride 'ride/:controller', :action => 'ride'
/ride/first
назвал бы FirstController#ride
а также /ride/second
назвал бы SecondController#ride