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 ステートメントが生成され、名前またはカテゴリが 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

これは非常に古い投稿であることは知っていますが (今では)、この宝石をお知らせしたかっただけです: https://github.com/antillas21/ajax-datatables-railsは、説明されているように、データテーブル クラスの作成を簡単に開始するのに役立ちます。あなたが言及したRailscastで(実際にはこれと同じパターンに基づいています)。

jquery.dataTablesgem が行うことは、db からモデル データを取得するためのクエリの作成と、必要なJSON でそれを公開する方法に集中できるようにすることです。

スピンしてください。

于 2014-11-12T17:45:31.587 に答える