1

関連するモデルを表示しているインデックス管理ビューがありますCity。都市名でソートできるようにしたいのですが、列ヘッダーをクリックしてソートすると、次のエラーが発生します。

ActiveRecord::StatementInvalid in Admin/deals#index

SQLite3::SQLException: no such column: cities.name: SELECT  "deals".* FROM "deals"  ORDER BY cities.name desc LIMIT 30 OFFSET 0

インデックス ビュー

ActiveAdmin.register Deal do
  index do
     column :id
     column :city
  end
  ...
end

モデル

class Deal < ActiveRecord::Base
  belongs_to :city
end

都市で並べ替えるにはどうすればよいですか?

4

2 に答える 2

2

Rails 3 または 4 の場合:

index do
  column :city, :sortable=>:"cities.name"

  ...
end

そして、同じファイルで、DealクエリにCity属性を含めるためにこれが必要です。

controller do
  def scoped_collection
    Deal.includes(:city)
  end

  ...
end
于 2014-09-22T18:41:58.730 に答える
0

https://github.com/gregbell/active_admin/pull/623#issuecomment-2419393と次のコメントをご覧ください。並べ替えを行う方法をactiveadminに指示する必要があります-おそらく、取引インデックスページを定義する前にスコープcolumn :city, :sortable => 'cities.name'を定義するようなものです。joined何かのようなもの

scope :joined, :default => true do |deals|
  deals.includes [:city]
end
于 2012-06-29T19:39:05.800 に答える