ActiveAdmin:按关联排序(belongs_to)

我有一个索引管理员视图,我正在显示一个关联的模型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 

我怎么能按城市排序?

使用Rails 3或4:

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

然后,在同一个文件中,您需要这样才能使Deal查询包含City属性:

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

请查看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