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

возможно ли иметь значение контроллера в рельсах с именем route в качестве параметра, который я могу передать во время выполнения, чтобы направить вызов на правильный контроллер?

например map.ride 'поездка' ,:controller => {какой-то способ указания параметра}, :action => 'поездка'

затем во время выполнения я хочу передать имя контроллера, на который должен идти этот вызов. Мои действия делают разные вещи в зависимости от того, на какой контроллер отправляется вызов. Спасибо


person user350785    schedule 26.05.2010    source источник


Ответы (2)


Ответ Thomas' правильный, однако, если вам нужна большая гибкость в формате URL, вы можете указать несколько маршрутов и использовать < href="http://guides.rubyonrails.org/routing.html#route-requirements" rel="nofollow noreferrer">требования к маршруту, поставив :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

person mikej    schedule 26.05.2010

Это будет работать:

map.ride 'ride/:controller', :action => 'ride'

/ride/first позвонит FirstController#ride, а /ride/second позвонит SecondController#ride

person Tomas Markauskas    schedule 26.05.2010
comment
спасибо, Томас - однако, как мне указать имя контроллера? используя приведенное выше, я обычно получаю доступный мне ride_path, и я хотел бы сделать что-то вроде ride_path(:controller =› 'first') . это сработает? - person user350785; 27.05.2010
comment
не волнуйся, я понял это, большое спасибо, это то, что я хотел - person user350785; 27.05.2010