2011-03-06 148 views
1

我有一个CourseCategory模型和一个课程模型以及相应的控制器course_categories和课程。一门课程属于一门课程,一门课程很多。Ruby On Rails模型/控制器问题

我想要一个显示特定类别课程的页面。这个功能属于哪个控制器?我应该嵌套这些资源吗?只是寻找最好的方式来建模。

回答

2

CourseCategories。想想你的网址,这就是做出这样的决定,最简单的方法:

example.com/course_categories/1

--or,更好,使用蛞蝓的类别,而不是ID和你get--

example.com/course_categories/awesome_courses/

但是,考虑简单地使用“类别”模型而不是“course_categories”模型可能是值得的。然后,您可以根据课程窝类,你会得到这样的:

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

0

我会说你会显示一个coursecategory列表 - 因此将属于coursecategory控制器。

0

你可以添加这个,这样课程控制器和一个参数说明哪个类别作出响应。

或者,如果有意义的话,您可以使课程成为course_categories的嵌套属性。那么这将是默认行为。

编辑因为我给了别人的相反的答案。第一个建议将让你

/courses?course_category=math 

/courses/math 

然后查找course_category控制器

第二个想法是让你做

/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(course show page)