Ответ 1
Это также должно выполнить работу:
index do
column City.model_name.human, :city, :sortable => 'cities.name'
end
controller do
def scoped_collection
end_of_association_chain.includes(:city)
end
end
У меня есть следующие объекты:
class District < ActiveRecord::Base
belongs_to :city
end
class City < ActiveRecord::Base
has_many :districts
end
То, что я хотел бы сделать (и не смог сделать это до сих пор), заключается в следующем: иметь столбец City
в индексе District
и этот столбец следует сортировать по City.name
.
Ближе всего я смог обойтись без сбоя ActiveAdmin:
index do
column City.human_name(:count => :other), :city, :sortable => :city_id
end
Что, конечно, недостаточно хорошо; Я не хочу сортировать по целочисленному значению внешнего ключа.
Пробовал такие вещи, как :sortable => 'city.name'
, выдает ошибку. Даже пытался это сделать, как будто вы делаете это на "чистых" рельсах - :joins => :cities, :sortable => 'city.name'
- не повезло. Пробовал кучу других глупых вещей, рассердился и решил смиренно обратиться за помощью.
Может ли кто-нибудь указать мне в правильном направлении? Спасибо за ваше время.
Это также должно выполнить работу:
index do
column City.model_name.human, :city, :sortable => 'cities.name'
end
controller do
def scoped_collection
end_of_association_chain.includes(:city)
end
end
Попробуйте это.. Это поможет....
index do
column :city, :sortable => :"cities.name" do |district|
district.city.human_name(:count => :other) if district.city.present?
end
end
controller do
def scoped_collection
District.includes(:city)
end
end
Используйте имя таблицы, возможно, cities
. Это может выглядеть так:
District.joins(:city).order("cities.name")
Очень простое и понятное решение:
index do
column :city, sortable: "cities.name"
end
controller do
def scoped_collection
# join cities
super.includes :city
end
end