Как получить результат поиска pg по категориям - PullRequest
0 голосов
/ 29 мая 2020

Я использую 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 принадлежит как модели книги, так и модели суры.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...