すべてのカテゴリを表示するインデックスページを作成しようとしています。アルファベット順にです。ただし、そのカテゴリに記事がタグ付けされている。記事には多くのカテゴリがあります。Ruby on Rails:記事が含まれている場合、インデックスページのカテゴリのみを表示します
インデックスページを最初に読み込むと、2つのカテゴリのみが表示されます。次の2つのカテゴリを読み込むために、インデックスページの下部に「もっと多くのロード」ボタンがあります。
カテゴリ変数をどのように割り当てているかには誤差があると思います。 AJAXボタンの動作が、同じ2カテゴリ名(例えば、 "A" 示され、 "B"、代わりに次の2(例えば "C" & "D")の中である。
カテゴリコントローラ
def index
if params[:name]
@categories = Category.with_articles.order('name ASC').where('name> ?', params[:name]).limit(2)
else
@categories = Category.with_articles.order('name ASC').limit(2)
end
respond_to do |format|
format.html
format.js
end
end
カテゴリ/ index.html.erb
<%= render @categories %>
schema.rb
create_table "categories", force: :cascade do |t|
t.string "name"
end
create_table "article_categories", force: :cascade do |t|
t.integer "article_id"
t.integer "category_id"
end
モデル/ category.rb
class Category < ApplicationRecord
has_many :article_categories
has_many :articles, through: :article_categories
def self.with_articles
includes(:articles).where.not(articles: { id: nil })
end
end
EDIT: モデル/ article_category.rb
class ArticleCategory < ActiveRecord::Base
belongs_to :article
belongs_to :category
end
モデル/ article.rb
class Article < ApplicationRecord
has_many :article_categories
has_many :categories, through: :article_categories
end**
記事をカテゴリに関連付けることができません: "Category.articles"、これはカテゴリモデルにhas-many through associationを使用しているためです。 "Category.includes(:articles)を使用しますが、同じ問題が発生します。 – doyz
try:' Category.joins(:articles) ' –
表示される問題を投稿できますか? –