2012-08-05 13 views
5

Sto usando Ransack per eseguire ricerche abbastanza complesse attraverso alcuni modelli. Uno di questi modelli contiene testo libero e utilizza la gemma act_as_taggable per taggare le parole.Ricerca tramite tag usando Ransack

Sto provando a creare un selettore di raccolta di queste parole in modo che il ransack possa trovare qualsiasi record di testo completo da un sottoinsieme di tag che l'utente può definire.

Questo mi porta quasi lì, ma se provo a scegliere più di una parola, non restituisce alcun risultato!

= f.select :note_in, @freetexts.tag_counts_on(:tags), {}, {:multiple => true} 

risposta

0

Il ransack non è realmente orientato a ricerche complesse. È molto probabile che se si mette a dura prova del saccheggio abbastanza si finisce con un problema più difficile che se si esegue una selezione complessa.

Per una ricerca complessa, consiglierei Sequel, dello stesso autore di saccheggi e molto più orientato verso ricerche complesse.

Inoltre, secondo thes infilare si è in un vicolo cieco: Ransack and acts-as-taggable-on issues

0

io non sono un esperto a tutti, ma questa soluzione non ransack potuto lavorare per coloro che hanno bisogno di filtrare per tag con il agisce-come-oggetto di tag-on gemma:

@search = MyModel.ransack(params[:q]) 
@result = @search.result(distinct: true).includes(:related_model) 
@result = @result.tagged_with(params[:tags].split(/\s*,\s*/)) if params[:tags].present? 
@result = @result.paginate(page: params[:page], per_page: 20) 

Questo si aspetta una nuova: param tag che è fuori del campo di applicazione Ransack. Puoi usare per filtrare i risultati che Ransack ti dà.

Problemi correlati