2011-03-06 4 views
1

나는 CourseCategory 모델과 코스 모델을 해당 컨트롤러 course_categories 및 코스와 함께 가지고 있습니다. 코스는 카테고리에 속하며 카테고리에는 많은 코스가 있습니다.Ruby On Rails 모델/컨트롤러 질문

특정 카테고리의 코스를 보여주는 페이지를 갖고 싶습니다. 어떤 컨트롤러가이 기능에 속합니까? 이러한 리소스를 중첩해야합니까? 이 모델을 만드는 가장 좋은 방법을 찾고 있습니다.

답변

2

CourseCategories을 할 것입니다 당신이

/courses?course_category=math 

또는

/courses/math 

그런 다음 컨트롤러

에 course_category에 대해 살펴 보자 것입니다.

example.com/course_categories/1

- 또는 더 나은, 대신 ID의 범주 슬러그를 사용하고

example.com/course_categories/awesome_courses/을이거나 먹어 것 : 당신의 URL을 생각해이 같은 결정을 내릴 수있는 가장 쉬운 방법 이잖아

그러나 "course_categories"모델이 아닌 "categories"모델을 가진 간단한 것을 고려해 볼 가치가 있습니다. 그런 다음이 과정에서 둥지 범주 수, 당신은 같은 것을 얻을 것 :

example.com/courses/categories/1 또는 example.com/courses/categories/hard

0

나는 당신이 coursecategory 목록을 보여줄 것이라 말하고 싶다. 그러므로 coursecategory 컨트롤러에 속할 것이다.

0

코스 컨트롤러에 추가하여 응답 할 카테고리를 지정하는 매개 변수를 사용할 수 있습니다.

또는 이해가된다면 course_categories에 중첩 된 코스를 중첩시킬 수 있습니다. 그러면 이것이 기본 동작입니다.

EDIT 나는 다른 누군가의 반대 대답을했기 때문에. 첫 번째 제안은 두 번째 아이디어는 당신이

/math/courses 
0

대안은

routes.rb

resources :course_catgeories do 
    resources :courses 
end 

courses_controller 같은 일을하는 것입니다 .rb

def index 
    @course_category = CourseCategory.find(params[:course_category_id]) 
    @courses = @course_category.courses 
end 

카테고리에 대한 강좌를 나열하는 경우 논리가 여기에 해당되며 그에 대한 일반적인 조치는 색인 조치입니다. 이 경우를 제외하고는 목록을 특정 카테고리로 범위 지정합니다. 이러한 측면에서 생각해 보면이 접근 방식이 도메인을 더 잘 모델링한다고 생각합니다.

이 방법을 효과적으로 다음과 같은 경로를 생성합니다

/course_categories/(카테고리 인덱스 페이지)
/course_categories/1 (카테고리 쇼 페이지)
/course_categories/1/코스 (물론 인덱스 페이지)
/course_categories/1/courses/1 (과정보기 페이지)