我在我的Course#index方法中以几种方式定义@courses变量:
def index
@courses = Course.order("title")
# @courses = Course.all
# @courses = Course.paginate(page: params[:page] )
# @courses = Course.order("subject_id").order("student_level_id")
end
我有一个部分视图来显示集:_course.html.slim
:
li
=> link_to(course.title.capitalize, course)
问题是,在显示课程集时,无论我定义@courses
的方式如何,顺序都不会改变。虽然在rails console
中存在顺序上的差异。
更新
这是一个courses / index.html.slim,它是Hartl教程的基本示例。
ul.users
= render @courses
顺便说一下,在另一个地方(在主页/static_pages/home.html.slim上),这个相同的代码片段会产生其他排序。
所以,我想知道,也许这是某种缓存问题....
可能是什么问题?提前谢谢!
答案 0 :(得分:0)
我发现了我做错了什么。
定义了两个单独的@courses
实例,每个实例都在两个不同的控制器中,因此我得到了答案的差异,因为只订购了一个实例。
为了保持干爽,我从控制器移动了订购
@courses = Course.order("subject_id").order("student_level_id")
到课程模型:
default_scope order: "courses.subject_id, courses.student_level_id"
并将控制器中的所有定义更改为简单的Course.all
。
另外,我相信我找到了我的这个问题的答案:https://stackoverflow.com/questions/20583858/default-scope-ordering-based-on-associated-models-attributes
非常感谢您的帮助!