У меня есть таблица категорий, которая выглядит следующим образом:
id store_id parent_category_id name
1 1 nil Footwear
5 1 1 Men's Shoes
7 2 nil Accessories
22 2 7 Watch
То, что я пытаюсь сделать, - это создать фильтр на моей индексной странице на основе ассоциации с категорией, если они совпадают. Я борюсь за то, чтобы заставить группу / сортировку работать на дизайн. Я пытаюсь отобразить что-то вроде следующего:
p {
display: inline-block;
padding-left: 10px;
}
<ul class="nav">
<li class="nav-item active">
<a href="#homeSubmenu1" data-toggle="collapse" aria-expanded="false" class="dropdown-toggle">Footwear</a>
<p>2,000</p>
<ul class="collapse list-style-upper" id="homeSubmenu1">
<li><a href="home-sub-submenu1">Men's Shoes</a>
<p>1,000</p>
<ul class="list-style-upper-sub">
<li>Adidas<p>1,000</p></li>
<li>Nike<p>500</p></li>
<li>Convers<p>500</p></li>
</ul>
</li>
<li><a href="#">Women's Shoes</a><p>500</p></li>
<li><a href="#">Children's Shoes</a><p>500</p></li>
<li><a href="#">Socks<p>100</p></a>
<ul class="list-style-upper-sub">
<li>Blue<p>50</p></li>
<li>Red<p>25</p></li>
<li>Green<p>25</p></li>
</ul>
</li>
</ul>
До сих пор я разработал родительский метод для захвата родителей, основанный на нуле:
def parent_category
Connector::Category.where(parent_category_id: [nil, ''])
end
Это приводит к правильным родителям, но я не могу понять, как сгруппировать по parent_category_id, а затем применить правильные ссылки для применения фильтрации. Я пробовал такие вещи, как:
<ul class="nav">
<% Connector::Category.group(:name).each do |x|%>
<li><%=x.name.titleize%></li>
<%end%>
</ul>
В результате PG :: GroupingError: ERROR: столбец «connector_categories.id» должен появиться в предложении GROUP BY или использоваться в статистической функции.
Итак, я подумал, что просто поместу это в метод индекса для страницы индекса продуктов (где это появляется) со следующим:
def index
query = query_products
query = query.search(params[:search]) if params[:search]
@products = query.order(sortable_query).paginate(page: params[:page], per_page: 20)
@category = Connector::Category.select(:id, :name).all.order('number ASC').group(:parent_category_id)
end
<ul class="nav">
<%@category.all.each do |X|%>
<li><%=x.name%></li>
<%end%>
</ul>
Это приводит к тому, что формальный аргумент не может быть константой.
Так как мне создать сгруппированный неупорядоченный список, используя таблицу, которая ссылается на себя?