I가 다음과 같은 경로 :레일 웨이는 여러 경로에서 가능한 조치를 처리하는
resources :users do
# List reviews made by user
resources :reviews, :only => [ :index ]
end
resources :products do
# List reviews by product, and provide :product_id for creation
resources :reviews, :only => [ :index, :new, :create ]
end
# Other actions don't depend on other resources
resources :reviews, :except => [ :index, :new, :create ]
모든 것이 ReviewsController#index
제외하고, 바로 같습니다
def index
if params[:user_id]
@reviews = Review.find_all_by_user_id params[:user_id]
else
@reviews = Review.find_all_by_product_id params[:product_id]
end
respond_with @reviews
end
받는 표준 솔루션이 있는지 궁금 해서요 위의 문제 또는 더 나은 방법이있는 경우.
아주 좋은 제안. 나는'RESTful actions' 정신을 벗어 버려야한다고 생각합니다. :) –
가끔은 효과가 있으며 때로는 방해가되는 경우도 있습니다. 완전히 평온한 행동을 고수하고 싶다면 컨트롤러를 덮어 쓰는 것보다 컨트롤러를 덮어 쓸 수 있으므로 편안한 ProductReviewsController와 편안한 UserReviewsController를 가질 수 있습니다. 물론 많은 예외 및 유일한 문을 이미 사용하고 있으므로 명시 적 URL 일치를 사용하면 내 예제와 같이 가장 적합한 솔루션이 될 수 있습니다. –
나는 어떤 사람들이 너무 쉬었다는 말을 들었습니다. 나는 때때로 여러분이 탈출 할 필요가 있다는 데 동의합니다. 그러나 이것은 그렇게 보이지 않습니다. 사실, 두 개의 컨트롤러를 만들어 두 가지 리소스 (인덱스 동작 만)의 나머지 스타일을 깨고 있습니다. 이 경우, 나는 그것을 하나의 컨트롤러에 유지하고 params에 적절하게로드 할 것입니다. – DGM