【问题标题】:Ordering doesn't work订购不起作用
【发布时间】:2014-01-03 16:51:25
【问题描述】:

我以多种方式在我的 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 中的顺序有所不同。

更新

这是一个课程/index.html.slim,它是来自 Hartl 教程的一个基本示例。

 ul.users
  = render @courses

顺便说一句,在另一个地方(在主页/static_pages/home.html.slim 上),同样的代码 sn-p 会导致其他排序。

所以,我想知道,也许这是某种缓存问题....

可能是什么问题?提前谢谢!

【问题讨论】:

  • 我对你的问题投了反对票,因为你没有提供相关的代码片段,你实际使用@courses
  • 我为课程视图添加了 index.html.slim 内容。
  • 查看您的 Rails 服务器输出以了解每次加载页面时它正在执行的查询。对于上面的示例,它应该类似于 SELECT "courses".* FROM "courses" ORDER BY title

标签: ruby-on-rails-3 partial-views


【解决方案1】:

我发现我做错了什么。

定义了两个单独的 @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

非常感谢您的帮助!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-16
    相关资源
    最近更新 更多