#ruby-on-rails-3 #has-and-belongs-to-many #activeadmin
#ruby-on-rails-3 #имеет и принадлежит многим #activeadmin
Вопрос:
Я использую Active Admin 0.3.2, и моя схема базы данных включает в себя несколько отношений has_and_belongs_to_many. Я могу создавать и отображать записи просто отлично, но попытка включить их в раздел фильтра приводит к остановке работы.
modelspin.rb:
class Pin < ActiveRecord::Base
has_and_belongs_to_many :pin_types, :join_table => :pin_types_pins
end
modelspin_type.rb
class PinType < ActiveRecord::Base
has_and_belongs_to_many :pins, :join_table => :pin_types_pins
end
admin pins.rb
ActiveAdmin.register Pin do
filter :pin_types
...other filters
end
В результате появляются другие фильтры, но для типов выводов вообще нет раздела.
Если adminpins.rb это вместо:
ActiveAdmin.register Pin do
filter :pin_types, :as => :check_boxes
...other filters
end
Я получаю следующее:
undefined method `pin_type_ids_in' for #<MetaSearch::Searches::Pin:0xcd2c108>
Что я хотел бы сделать, так это разрешить пользователю выбирать один или несколько типов выводов из набора возможных вариантов и фильтровать в зависимости от того, применяется ли какой-либо из выбранных параметров.
Возможно ли это?
Комментарии:
1. Я сам нашел решение на GitHub . Для справки:
filter :pin_types_id, :as => :check_boxes, :collection => proc {PinType.all}
2. если мы хотим создать Pintype из pin, то что нам нужно сделать?
Ответ №1:
используйте фильтр следующим образом: filter:model_attribute , поэтому, если вы находитесь на User_events и хотите выполнить поиск по имени пользователя, вы бы выполнили этот фильтр: user_fullName
Комментарии:
1. Можете ли вы подробнее рассказать об этом? Я не уверен, что вы имеете в виду.
Ответ №2:
Обратите внимание, что ответ ccarlson работает, но только с :check_boxes
.
Это прискорбно, потому что поведение meta_search по умолчанию (используемое для включения поиска по фильтру) не отфильтровывает дубликаты… и когда вы используете флажки, вы, вероятно, не хотите, чтобы результат отображался дважды, потому что он соответствует 2 выбранным параметрам.
При попытке использования я столкнулся с ошибкой undefined method as: :select
, но мне пришлось стиснуть зубы на флажках.