У меня есть блог, который отображает каждую категорию со всеми соответствующими подкатегориями на одной странице.(индексное представление) У меня есть раздел навигации, который я хочу использовать для отображения только сообщений определенной подкатегории на основе нажатой ссылки.Я не знаю, возможно ли это с одним только ruby, поэтому я подумал, что JQuery может быть правильным.
blog_categories index.html.erb:
<%= link_to "BLOG", blog_path %> <!-- Will render latest posts. -->
<li role="presentation" class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
NEWS <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li role="presentation"><a href="#">All News</a></li> <!-- Will render all subcategories that belong to the "news" category -->
<li role="presentation"><a href="#">Good News</a></li>
<li role="presentation"><a href="#">Bad News</a></li>
</ul>
</li>
<li role="presentation" class="dropdown">
<a class="dropdown-toggle" data-toggle="dropdown" href="#" role="button" aria-haspopup="true" aria-expanded="false">
REVIEWS <span class="caret"></span>
</a>
<ul class="dropdown-menu">
<li role="presentation"><a href="#">All Reviews</a></li>
<li role="presentation"><a href="#">Software</a></li>
<li role="presentation"><a href="#">Hardware</a></li>
</ul>
</li>
<% BlogCategory.top_level.find_each do |category| %>
<% category.sub_categories.find_each do |sub_category| %>
<% sub_category.posts.find_each do |post| %>
<%= link_to post do %>
...
<% end %>
<% end %>
<% end %>
<% end %>
Blog_categories_controller:
def index
@category = BlogCategory.find_by_id(params[:id])
unless @category.nil? # Allows for categories to have nothing in them, eliminating the NoMethodError
@sub_category = @category.sub_categories.first
@posts = @subcategory.posts
end
end
private
def cat_params
params.require(:blog_category).permit(:name, :parent_id, :sub_category)
end
My sub_categories
связаны с основными категориями через столбец parent_id
в таблице blog_categories
через самоссылочную связь.
Я немного читал об активных запросах записей на guides.rubyonrails.org и видел кое-что о таких условиях, как Client.where("orders_count = ?", params[:orders])
Можно ли это использовать?
Если это неправильный способ использования раскрывающихся списков HTML для итерации по BlogCategory, я хотел бы знать, каким способом лучше всего будет решить эту проблему, спасибо!