2012-05-07 2 views
3

Я пытаюсь просто разрешить фильтрацию категорий на странице Locations для ActiveAdmin.Настройка фильтра has_many через Active Admin

У меня есть три модели:

class Location < ActiveRecord::Base 
    has_many :categories_locations 
    has_many :categories, :through => :categories_locations 

class CategoriesLocation < ActiveRecord::Base 
    belongs_to :category 
    belongs_to :location 
end 

class Category < ActiveRecord::Base 
    has_many :categories_locations 
    has_many :locations, :through => :categories_locations 
end 

На моей странице локаций, я использую этот фильтр:

ActiveAdmin.register Location do 
    filter :name 
    filter :category, :collection => proc { Category.all }, :as => :select 

Тем не менее, продолжает бросать ошибку.

undefined method `category_eq' for #<MetaSearch::Searches::Location:0x007fd4f9b965d8> 

Я пробовал фильтр: категории, filter: categories_locations, но ничего не будет работать.

Кто-нибудь испытал это - у кого-нибудь есть решение?

+0

Am, имеющих один и тот же вопрос, и я не могу перейти от HABTM к HAS_MANY/через, так что любое реальное решение этой проблемы? –

ответ

1

в некоторой точке has_many/через более гибкий, чем HABTM (вы можете иметь дополнительные поля и т.д.)

+0

Как это выбрано в качестве принятого ответа? – wkhatch

0

Почему вы не используете habtm?

class Location < ActiveRecord::Base 
    has_and_belongs_to_many :categories 

class CategoriesLocation < ActiveRecord::Base 
end 

class Category < ActiveRecord::Base 
    has_and_belongs_to_many :locations 
end 

, а затем

ActiveAdmin.register Location do 
    filter :name 
    filter :category_id, :collection => proc { Category.all }, :as => :select 
Смежные вопросы