2013-03-11 12 views
7

Benactiveadmin: önbellek filtresi

#in cities.rb 

    filter :country #drop-down select list with more than 200 values 

Neredeyse statik liste, ben denedim

daha iyi verimlilik için önbelleğe gereken bir filtre

filter :country, :collection=>proc{cache {options_from_collection_for_select(Country.all, :id, :name)}} #no luck 

size

ederiz sahip değerleri böyle

cevap

1

deneyin şey:

DÜZENLEME: Ben comment yorumlarına dayanarak benim kod örnekleri değiştirdik.

EDIT: Örneği, html nesli içerecek şekilde güncelleştirdim. bazen ülke adına göre arama

# In activeadmin 
filter :country, :collection => proc do 
    Rails.cache.fetch('countries_for_select') do 
    options_from_collection_for_select(Country.all, :id, :name)} 
    end 
end 

# Somewhere, when you want to expire the cache 
Rails.cache.delete('countries_for_select') 
+0

i tüm html i = 'Şehir :: ÜLKELER gibi bir şey yaratabilir senin mantığında daha sonra select render .. için nesnelerin değil koleksiyonu seçin önbelleğe gerekir [ 'Arjantin', 'Belize', ...] 've onu kullan - benim durumum değil .. tüm olasılıkları ile önbelleğe ihtiyacım var: zaman aşımına uğrayan, dev bir ortamda devre dışı bırakma .. – okliv

+0

Ah, bu biraz daha ilgili. Özellikle de sona eren kısım. ['Rails.cache.fetch'] 'a bakmanızı öneririz (http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html#method-i-fetch) Oh heck, ben' Cevabımı düzenlemeyi deneyeceğim. –

0

Şimdi daha iyi bir seçenek var, AJAX filters kullanabilirsiniz!

filter :country, as: :ajax_select, data: { search_fields: [:name] } 
+1

umut verici görünüyor, bir örnek görme şansı var mı? – okliv

+0

Canlı örnek mi demek istiyorsun? İyi fikir, bir bakacağım – Alexander