2012-06-29 2 views
0

У меня есть просмотр администратора индекса, где я показываю связанную модель City. Я хотел бы иметь возможность сортировать по названию города, но когда я нажимаю на заголовок столбца для сортировки я получаю следующее сообщение об ошибке:ActiveAdmin: Сортировка по ассоциации (принадлежит_to)

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

Взгляните на 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 
+1

, к сожалению, , он тормозит, если вы попытаетесь использовать его с фильтрацией – okliv

2

С Rails 3 или 4:

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

    ... 
end 

А затем, в том же файле, вам это нужно так, чтобы Deal запросы включают City атрибуты:

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

    ... 
end 
Смежные вопросы