ActiveAdmin comment trier une colonne avec des associations
Je suis l'élaboration d'un ActiveAdmin application, et je veux trier une colonne d'entreprises par leur "type". Malheureusement, mon code ne fonctionne pas. Quel code dois-je utiliser pour accomplir cette? Voici mon code...
app/models/business.rb
class Business < ActiveRecord::Base
belongs_to :type
attr_accessible :description, :email, :facebook, :foursquare, :google, :manager,
:mobile, :name, :phone, :type_id, :url, :yelp
end
app/models/type.rb
class Type < ActiveRecord::Base
attr_accessible :category
has_many :businesses
def to_s
category
end
end
app/admin/businesses.rb
ActiveAdmin.register Business, { :sort_order => :name_asc } do
scope :joined, :default => true do |businesses|
businesses.includes [:type]
end
index do
column :name
column :type, :sortable => 'businesses.type'
column :manager
column :email
default_actions
end
end
Merci!
source d'informationauteur Slicekick
Vous devez vous connecter pour publier un commentaire.
selon cette discussion: https://github.com/gregbell/active_admin/pull/623si vous ne voulez pas utiliser des étendues, vous pouvez utiliser l'étendue de la méthode de collecte de la place:
FIXE
column :type, :sortable => 'types.category'
Oui, le scoped_collection Evgenia condition fonctionne très bien. Aussi, pour plus d'une des colonnes:
Cela peut être fait.
Ici, j'ai un modèle en Étoile. Une étoile appartient à une Personne. Je vais mettre la Personne.nom de l'Étoile admin index, faire sortable, de la faire fonctionner avec des étendues, et d'ajouter des filtres.
Vous devez d'abord ajouter le rejoindre modèle pour chacun de vos compétences. Dans ce cas, j'ai eu 3 portées: tous, category_subscriptions et person_subscriptions. Je suis en déclarant la portée et l'ajout de la jointure modèle:
Désormais ajouter le nom de la personne à partir de la jointure modèle dans mes étoiles de l'indice de je fais ceci:
Nous allons disséquer:
Maintenant ajouter quelques filtres. C'est beaucoup plus facile:
Et vous avez terminé.