Я использую pg search для поиска по базе данных и получения результатов поиска. Теперь вот мой поисковый контроллер
class SearchController < ApplicationController
def index
if params[:query].present?
@ayats = Ayat.search(params[:query]).order("book_id ASC", "surah_id ASC")
else
@ayats = Ayat.all.order("book_id ASC", "surah_id ASC")
end
end
end
Вот моя модель Ayat
class Ayat < ApplicationRecord
belongs_to :surah
belongs_to :book
include PgSearch
pg_search_scope :search, against: [:ayat_text]
end
Вот мой вид страницы поиска
<!DOCTYPE html>
<html>
<head>
<title>Search</title>
</head>
<body class="body_style">
<p align="center">
<%= form_tag(search_path, method: "get") do %>
<%= text_field_tag :query, nil, placeholder: "Search .."%>
<button> <%= submit_tag "submit", style: "display: none;", class: "btn btn-primary" %> Search</button>
<% end %>
</p>
</br>
<div align="center">
<%@ayats.order("ayat_number ASC").each do |ayate|%>
<div class="ayat"> <%= ayate.ayat_text%><span class="ayat_ref">--Ayat No:(<%= ayate.ayat_number%>)/<%=Surah.find(ayate.surah_id).surah_name%>/<%=Book.find(ayate.book_id).name %></span></div>
<%end%>
</div>
</body>
Все работает нормально. Но я хочу, чтобы результаты поиска выглядели так:
<div align="center">
<% @books.each do |book| %>
<p><%=book.name%></p>
<%book.surahs.order("surah_number ASC").each do |surah|%>
<p><%=surah.surah_name%></p>
<%surah.ayats.order("ayat_number ASC").each do |ayate|%>
<div class="ayat"> <%= ayate.ayat_text%><span class="ayat_ref">--Ayat No:(<%= ayate.ayat_number%>)/<%=surah.surah_name%>/<%=book.name %></span></div>
<%end%>
<%end%>
<% end %>
</div>
Здесь модель Ayat принадлежит как модели книги, так и модели суры.