如何显示特殊类别的文章?

How to show articles with special categories?

所以我对两个模型(ArticleCategory)使用 has_and_belong_to_many 关联。我的 header 有 link 带有显示不同类别的下拉菜单。我所有的文章都在索引页上,我需要根据它的类别对其进行排序,以便用户可以选择他们想看的内容。我想我应该在类别控制器的 show action 中做一些事情,但不知道具体是什么。为了解决这个问题,我在我的视图和控制器中尝试了不同的每次迭代,但不幸的是它没有帮助。

任何帮助将不胜感激

您可以 select 具有特定类别的文章

selected_articles = Category.find_by_name("Name of category").articles

或者,如果您只是不知道名字

selected_articles = Category.find(category_id).articles
Article.joins(:category).where(categories: {id: :your_category_id})
#config/routes.rb
resources :articles do
   get ":category_id", action: :index, on: :collection #-> url.com/articles/:category_id
end

#app/controllers/articles_controller.rb
class ArticlesController < ApplicationController
   def index
      if params[:category_id]
         @articles = Article.joins(:categories).where(category: {id: params[:category_id]})
      else
         @articles = Article.all
      end
   end
end

这将允许您使用:

#app/views/articles/index.html.erb
<%= form_tag articles_path do %>
    <%= f.collection_select :category_id, Category.all, :id, :name %>
    <%= f.submit %>
<% end %>
<% @articles.each do |article| %>
   <%= article.title %>
<% end %>