2013-03-11 19 views
7

Ho un filtroactiveadmin: filtro cache di valori

#in cities.rb 

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

Si elenco quasi statica, ho bisogno di memorizzare nella cache per una migliore produttività

Ho provato

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

Grazie

risposta

1

Prova qualcosa del tipo:

EDIT: Ho modificato i miei campioni di codice in base al feedback dei commenti.

MODIFICA: ho aggiornato l'esempio per includere la generazione html.

# 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

Ho bisogno di memorizzare nella cache l'intero html selezionare non la raccolta di oggetti per selezionare successivamente il rendering .. nella tua logica potrei creare qualcosa come 'Città :: COUNTRIES = ['Argentina', 'Belize', ...] 'e usarlo - non è il mio caso .. ho bisogno di cache con tutte le sue possibilità: scadenza, disabilitazione in ambiente dev e così via .. – okliv

+0

Ah, questo è un po 'più coinvolto. Soprattutto la parte in scadenza. Mi raccomando di cercare in ['Rails.cache.fetch'] (http://api.rubyonrails.org/classes/ActiveSupport/Cache/Store.html#method-i-fetch) Oh diamine, io ' proverò a modificare la mia risposta –

0

Ora avete una scelta migliore, è possibile utilizzare AJAX filters!

+1

sembra promettente, qualche possibilità di vedere un esempio? – okliv

+0

Vuoi dire esempio dal vivo? Buona idea, darò un'occhiata – Alexander

Problemi correlati