Рельсы назвали маршруты + контроллер в качестве параметра

Возможно ли иметь значение контроллера в рельсах с именем 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

Другие вопросы по тегам