【问题标题】:How to show articles with special categories?如何显示具有特殊类别的文章?
【发布时间】:2016-01-28 18:01:30
【问题描述】:

所以我将has_and_belong_to_many 关联用于两个模型(ArticleCategory)。我的标题有与不同类别出现的下拉菜单的链接。我所有的文章都在索引页面上,我需要根据它的类别对其进行排序,以便用户可以选择他们想要查看的内容。我想我应该在类别控制器中的显示操作中做点什么,但不知道具体是什么。为了解决这个问题,我在视图和控制器中使用了不同的每次迭代,但不幸的是它没有帮助。

任何帮助将不胜感激

【问题讨论】:

    标签: ruby-on-rails ruby has-and-belongs-to-many


    【解决方案1】:

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

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

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

    selected_articles = Category.find(category_id).articles
    

    【讨论】:

    • find_by_name 以及动态查找器已从 Rails 中弃用。 Category.find_by(name: "name") 是正确的语法。
    【解决方案2】:
    Article.joins(:category).where(categories: {id: :your_category_id})
    

    【讨论】:

      【解决方案3】:
      #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 %>
      

      【讨论】:

        猜你喜欢
        • 2014-04-07
        • 1970-01-01
        • 2021-12-24
        • 2023-02-02
        • 2019-02-09
        • 2014-10-03
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多