我有一个索引管理员视图,我在其中显示关联的模型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
我如何按城市排序?
答案 0 :(得分:2)
使用Rails 3或4:
index do
column :city, :sortable=>:"cities.name"
...
end
然后,在同一个文件中,您需要这样,以便Deal
查询包含City
属性:
controller do
def scoped_collection
Deal.includes(:city)
end
...
end
答案 1 :(得分: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