2012-02-18 2 views
3

Проблема заключается в следующем: filter: contact,: as =>: строка успешно работает, если я набираю идентификатор для контакта. Но это не практично, если у вас более 2000 контактов. Как я могу успешно фильтровать: contact, as =>: string, но для поиска: name вместо: id.Active_admin и: filter

Я попытался следующие без успеха:

filter :contact, :as => :string, :collection => proc {Contact.where(:name => 'Paul')} 
filter :contact, :as => :string, :collection => proc { (Contact.order.all).resources{|c| [c.name]}} 

Примечание: мое хранилище можно найти here.

Модель: order.rb

belongs_to :contact 

миграции:

def change 
create_table :orders do |t| 
    t.string :tag 
    t.text :description 
    t.string :technician_id 
    t.string :status 
    t.string :type 
    t.string :contact_id 
    t.string :business_id 

    t.timestamps 
end 

конец

администратора/заказы/- orders.rb

filter :business 
filter :contact, :as => :string, :collection => proc { (Contact.order.all).resources{|c| [c.name]}} 

filter :tag 
filter :description, :label => "Status" 
filter :created_at 

index do 
    column :business 
    column :contact 
    column :tag 
    column :status 
    column :description, :sortable => false do |order| 
    truncate(order.description, :length => 30) 
end 

ответ

3

Activeadmin использует meta_search драгоценный камень, поэтому попробуйте следующее:

filter :contact_name, :as => :string 
Смежные вопросы