나는 CourseCategory 모델과 코스 모델을 해당 컨트롤러 course_categories 및 코스와 함께 가지고 있습니다. 코스는 카테고리에 속하며 카테고리에는 많은 코스가 있습니다.Ruby On Rails 모델/컨트롤러 질문
특정 카테고리의 코스를 보여주는 페이지를 갖고 싶습니다. 어떤 컨트롤러가이 기능에 속합니까? 이러한 리소스를 중첩해야합니까? 이 모델을 만드는 가장 좋은 방법을 찾고 있습니다.
나는 CourseCategory 모델과 코스 모델을 해당 컨트롤러 course_categories 및 코스와 함께 가지고 있습니다. 코스는 카테고리에 속하며 카테고리에는 많은 코스가 있습니다.Ruby On Rails 모델/컨트롤러 질문
특정 카테고리의 코스를 보여주는 페이지를 갖고 싶습니다. 어떤 컨트롤러가이 기능에 속합니까? 이러한 리소스를 중첩해야합니까? 이 모델을 만드는 가장 좋은 방법을 찾고 있습니다.
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
나는 당신이 coursecategory 목록을 보여줄 것이라 말하고 싶다. 그러므로 coursecategory 컨트롤러에 속할 것이다.
코스 컨트롤러에 추가하여 응답 할 카테고리를 지정하는 매개 변수를 사용할 수 있습니다.
또는 이해가된다면 course_categories에 중첩 된 코스를 중첩시킬 수 있습니다. 그러면 이것이 기본 동작입니다.
EDIT 나는 다른 누군가의 반대 대답을했기 때문에. 첫 번째 제안은 두 번째 아이디어는 당신이
/math/courses
대안은
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 (과정보기 페이지)