2010-05-26 4 views
2

라우트라는 컨트롤러 값을 매개 변수로 사용할 수 있습니까? 런타임에 적절한 컨트롤러로 호출하도록 전달할 수 있습니까?레일스라는 이름의 라우트 + 컨트롤러를 파라미터로 사용합니다.

예컨대 map.ride 'ride', : 컨트롤러 => {어떤 방법으로 매개 변수를 지정}, : action => 'ride'

그러면 런타임에 컨트롤러 이름을 전달하고 싶습니다. 이 전화가 가야합니다. 내 작업은 호출이 전송되는 컨트롤러에 따라 다른 작업을 수행합니다. 여러 경로를 지정할 수있는 URL 형식으로 더 많은 유연성을 원하는 그러나 경우,

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

/ride/firstFirstController#ride을 부를 것이다 및 /ride/secondSecondController#ride

답변

2

Thomas' 대답이 올바른지 부를 것이다 : 감사

1

이 작동합니다 route requirements은 각각 :requirements을 입력하여 사용하십시오. 요구 사항이 충족되는 경우에만 경로가 일치합니다.

map.resources :rides, :path_prefix => '/:option', 
    :requirements => { :option => /one/ }, :controller => 'one' 
map.resources :rides, :path_prefix => '/:option', 
    :requirements => { :option => /two/ }, :controller => 'two' 

다음 : 예를 들어

/one/ridesTwoController

+0

덕분에 토마스로 이동합니다 OneController

/two/rides로 이동합니다 -하지만, 어떻게 컨트롤러의 이름을 지정합니다? 위의 방법을 사용하면 일반적으로 ride_path를 사용할 수있게되며 ride_path (: controller => 'first')와 같은 작업을 수행하려고합니다. 그게 효과가 있니? – user350785

+0

걱정하지 마라. 나는 그것을 알아 냈다. 고마워. – user350785

관련 문제