0

嗨,我刚刚按照 Ryan Bates 指南在客户端与数据表交互时从服务器加载数据。

http://railscasts.com/episodes/340-datatables?view=asciicast

在他的 ProductsDatatable 类中,他定义了一个排序函数:

  def sort_column
    columns = %w[name category released_on price]
    columns[params[:iSortCol_0].to_i]
  end

基本上列名是用来查询数据库的,所以“名称”、“类别”等都是产品模型的属性。因此生成了一个 SQL SELECT 语句,其中 Name 或 Category 用于对 ASC 或 DESC 进行排序......等等......

如果我的数据显示在未明确映射到属性的列中……例如 product.reviews.count,我将如何允许对该列进行排序?

4

2 回答 2

0

你需要这样的东西

def sort_column
    columns = ['name', 'category', 'released_on,' 'price', 'number_of_reviews]
    columns[params[:iSortCol_0].to_i]
  end

但这意味着您需要更改获取数据的方式,例如:

Product.where(…).select('name, category, count(reviews.id) as number_of_reviews').group('name, category').includes('reviews')

我无法测试 的定义columns,您可能必须reviews.number_of reviews改用

于 2012-11-04T10:26:08.323 回答
0

我知道这是一篇非常老的帖子(到目前为止),但只是想让您知道这个 gem:https ://github.com/antillas21/ajax-datatables-rails可以帮助您轻松快速开始创建数据表类,如所述在您提到的 Railscast 中(它实际上基于相同的模式)。

gem 所做的是让您专注于编写查询以从数据库中检索模型数据,以及如何在jquery.dataTables需要的 JSON 中公开它。

试一试。

于 2014-11-12T17:45:31.587 回答