0

私はwill_paginateをajaxソートで使用し、railscasts.comを見ました。 http://railscasts.com/episodes/240-search-sort-paginate-with-ajax

ページネーションのための私のコレクション

@cars = Car.joins(:engine).includes(:engine).select('cars.*, engines.*').order(sort_column + " " + sort_direction).paginate(:page => params[:page], :per_page => 5)

しかし、インデックスページに行くと、エラーが飛び出しました。

ActiveRecord::StatementInvalid in Items#index

SQLite3::SQLException: あいまいな列名: 名前: SELECT "cars"."id" AS t0_r0, "cars"."name" AS t0_r1, "cars"."model_id" AS t0_r2, "cars"."city_id" AS t0_r3, "cars"."created_at" AS t0_r4, "cars"."updated_at" AS t0_r5, "cars"."engine_id" AS t0_r6, "engines"."id" AS t1_r0, "engines"."name" AS t1_r1, "engines"."created_at" AS t1_r2, "engines"."updated_at" AS t1_r3 FROM "cars" INNER JOIN "engines" ON "engines"."id" = "cars"."engine_id" ORDER BY name ascリミット 5 オフセット 0

しかし、すでにソートされているページに移動すると、うまくいきます。

SQL のデフォルト Order の間違いだと思います。

「name」の代わりに「cars.name」を設定するには?

4

1 に答える 1

0

メソッドを見つけて、ソートのデフォルトを設定しました

private



 def sort_column
    Car.column_names.include?(params[:sort]) ? params[:sort] : "cars.name"
  end
于 2012-11-28T09:52:04.730 に答える