У меня есть эта модель
class Subject
has_many: contents
has_many: titles, :through => :contents
searchable do
text :titles, :default_boost => 5, :stored => true do
my_titles = titles.map { |title| title.try(:name) }
if my_titles.present?
my_titles += titles.map do |title|
title.path.map { |title| title.try(:name) }
end
end
my_titles.flatten.uniq.join(" ")
end
end
end
class Title
has_ancestry
end
Когда я ищу предмет, он работает нормально, но мне нужно добавить функцию, чтобы удалить ненужные заголовки на мой взгляд. Например, когда я ищу предмет с именем «Биология человека», я получаю результат
Subject: Science 1
Titles:
- Environmental Science >> Human Biology # <-----this record need to stay
- Chemistry 1 >> Chemistry 2 # <-----remove this
- Physics 1 >> Physics 2 # <-----remove this
Subject: Science 2
Titles:
Environmental Science >> Human Biology # <-----this record need to stay
Chemistry 1 >> Chemistry 2 # <-----remove this
Предметы появляются в моих результатах поиска, в то время как мне нужно отфильтровать заголовки на основе того, что я искал.
Вот мой взгляд:
<% @subjects.each_hit_with_result.each do |hit, subject| %>
<% subject.titles.uniq.each do |title| %>
<br/>
<%=raw title.path.map {|e| link_to("#{e.name}", contents_url(:title => e.id) )}.join(' > ') %>
<br/>
<% end %>
<% end %>
<% end %>
Я пытался получить параметры поиска и использовать функцию выбора, но я думаю, что это неправильная реализация.