Da molto tempo ormai, e con piena soddisfazione, uso questi due plugin, acts as taggable on steroids e will paginate.
Il primo serve ad aggiungere dei tag ad uno o più modelli, mentre il secondo serve a paginare i risultati di una query.
Fin qui tutto ok, ma quando ho provato a paginare i risultati provenienti da una ricerca per tag ho ricevuto un errore sql.
Mi sono informato, e mi sono accorto che è un problema molto conosciuto e diffuso e che riguarda proprio l'incompatibilità tra questi due plugin.
Nelle discussioni dei forum che leggevo, e nei commenti sui blog c'era molta gente scoraggiata e disperata, e tra chi sostituiva will paginate e chi si rifaceva le query da solo, ho trovato per fortuna un'interessante risorsa che risolve il problema, e cioè un post nel blog Dead dead goog.
La soluzione è questa
Nel controller
Links.paged_find_tagged_with(params[:tag], :page => params[:page],
:per_page => @items_per_page)
Nel modello
def self.paged_find_tagged_with(tags,args = {})
if tags.blank?
paginate args
else
options = find_options_for_find_tagged_with(tags)
options.merge!(args)
paginate(options.merge(:count => {:select => options[:select].gsub('*','id')}))
end
end
Se qualcuno conosce un'altro sistema fatemi sapere.
ACTS AS TAGGABLE ON STEROIDS E WILL PAGINATE INSIEME
0
comments
Save to del.icio.us
0 hits!
Subscribe to my feed