2012-08-05 17 views
5

Używam funkcji Ransack do wykonywania dość skomplikowanych wyszukiwań w niektórych modelach. Jeden z tych modeli zawiera wolny tekst i używa tagu acts_as_taggable do oznaczania słów.Wyszukiwanie za pomocą znacznika za pomocą funkcji Ransack

Próbuję utworzyć selektor kolekcji tych słów, aby można było znaleźć dowolny pełny zapis tekstu z podzbioru znaczników, które użytkownik może zdefiniować.

To doprowadza mnie prawie do siebie, ale jeśli spróbuję wybrać więcej niż jedno słowo, to nie zwróci żadnych wyników!

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

Odpowiedz

0

Ransack nie jest tak naprawdę ukierunkowany na skomplikowane wyszukiwania. Jest bardzo prawdopodobne, że jeśli wystarczająco mocno nałożysz na siebie ransack, skończysz z trudniejszym problemem, który sprawi, że gdy będziesz wykonywał skomplikowany wybór.

W przypadku skomplikowanego wyszukiwania polecam Sequel, od tego samego autora, który jest splądrowany i który jest znacznie lepiej ukierunkowany na złożone wyszukiwania.

Ponadto, zgodnie z Tes wątku jesteś ślepy zaułek: Ransack and acts-as-taggable-on issues

0

Nie jestem ekspertem w ogóle, ale to rozwiązanie nie plądrować mógł pracować dla tych, którzy potrzebują, aby filtrować według tagów z akty-as-taggable na gem:

@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) 

ta spodziewa się nowe: tagi param że jest poza zakresem plądrować. Możesz użyć do odfiltrowania wyników, które daje Ci Ransack.

Powiązane problemy