2016-04-02 32 views
0

ActiveAdmin'deki tüm kaynak denetleyicileri tarafından erişilebilir ve geçersiz kılmak istediğim bir arama koleksiyonu eylemim var. Bu şu kodla tek Aktif Yönetici kaynak denetleyici eylemleri oluşturmak için Önemsiz:ActiveAdmin temel denetleyicilerinden birine bir yol/eylem ekleme?

collection_action :autocomplete_user_last_name, method: :get 

    def autocomplete_user 
    term = params[:term] 
    users = User.where('first_name LIKE ? OR last_name LIKE ? OR email LIKE ?', "%#{term}%", "%#{term}%", "%#{term}%").order(:first_name) 
    render json: users.map { |user| 
     { 
     id:   user.id, 
     label:   user.full_name, 
     value:   user.full_name 
     } 
    } 
    end 

Ama nasıl ActiveAdmin taban kontrolör içerisinde benzer bir eylem yaratacak? Raylar içinde, ApplicationController, rota, eylem, yardımcı yöntem vb. Oluşturabileceğimiz diğer tüm denetleyiciler gibi davranıyor, ancak bu uygulamanın yalnızca tüm Uygulamam değil Active Admin'e yönlendirilmesini istiyorum. ActiveAdmin'de ApplicationController'a eşdeğer var mı?

ActiveAdmin::PageController 
ActiveAdmin::BaseController 
ActiveAdmin::ResourceController 

Ancak collection ve member eylemler bu sınıfların içinde tanımlanmış değildir: AA kodu ile Looking

, bütün kaynak denetleyicilerin üst sınıfı olan aşağıdaki taban denetleyicileri bulundu.

cevap

0

belirli bir kaynak. Sorduğum şeyin şu anda AA'nın API'siyle mümkün olup olmadığından emin değilim.

1

Tüm AA kaynak denetleyicilerinin 'ActiveAdmin :: ResourceController' kaynağından miras aldıklarına inanıyorum. Burada bellekten çalışıyorum burada dokümantasyon Class: ActiveAdmin::ResourceController

Bkz ama aşağıdaki active_admin.rb daki kontrolör kodu sararak başlayacaktı: Sadece rota/kontrolör eylemi kapsam sona erdi

ActiveAdmin::ResourceController.class_eval do 

    collection_action :autocomplete_user_last_name, method: :get do 

    def autocomplete_user 
     term = params[:term] 
     users = User.where('first_name LIKE ? OR last_name LIKE ? OR email LIKE ?', "%#{term}%", "%#{term}%", "%#{term}%").order(:first_name) 
     render json: users.map { |user| 
     { 
      id:   user.id, 
      label:   user.full_name, 
      value:   user.full_name 
     } 
     } 
    end 
    end 
end 
+0

Teşekkürler, bunu denedim. collection_action' bu bağlamda tanımlanmamıştır. –

+0

Haklısınız. collection_action AA DSL'de tanımlanmıştır. Buna rastladım: https://www.viget.com/articles/8-insanely-useful-activeadmin-customizations ama collection_action modülüne nasıl karıştıracağını anlayamadım. –

+0

Teşekkürler bunu gördü. Rota/denetleyici eylemini belirli bir kaynağa kadar tamamladım. Sorduğum şeyin şu anda AA'nın API'siyle mümkün olup olmadığından emin değilim. –