エラー内容は以下になります。
ActiveRecord::RecordNotFound in PostsController#index
Couldn't find Category without an ID
やりたい事としてましてはカテゴリーと投稿を紐付けて表示する事です。
多:多のリレーションであることから中間テーブルをおいています
postrb
1class Post < ApplicationRecord 2 ~省略~ 3 belongs_to :user 4 has_many :comments, dependent: :destroy 5 has_many :post_categories, dependent: :destroy 6 has_many :categories, through: :post_categories, dependent: :destroy 7 ~省略~ 8end
categoryrb
1class Category < ApplicationRecord 2 has_many :post_categories, dependent: :destroy 3 has_many :posts, through: :post_categories, dependent: :destroy 4end
postcategoryrb
1class PostCategory < ApplicationRecord 2 belongs_to :post 3 belongs_to :category 4end
ルーティングとしては
show画面に表示させたいのでresources :category, only: :showとしています
route
1Rails.application.routes.routes.draw do 2 devise_for :users 3 root "posts#index" 4 resources :posts do 5 resources :comments, only: :create 6 collection do 7 get 'search' 8 end 9 end 10 resources :category, only: :show 11 resources :users, only: :show 12end
問題はここからなんですが、
https://gyazo.com/35c237de76eb8d399385a578b06189be
https://gyazo.com/ad1ed7eba8976651336bb61aa3f059ee
カテゴリー(本)というリンクをクリックすると本と結びついている投稿を表示させるを行いたく
categoryontroller
1class CategoriesController < ApplicationController 2 def show 3 posts = Post.find(params:[id]) 4 @category=Category.where(category_id: 1) 5 @posts=@category.posts.includes(:user) 6 end 7end
postcontroller
1class PostsController < ApplicationController 2 before_action :set_post, only:[:edit,:show] 3 before_action :move_to_index, except: [:index, :show, :search] 4 def index 5 category=Category.find(params[:id]) 6 @posts = Post.includes(:user).order("created_at DESC") 7 end 8 9 ~省略~ 10 11 12end
postindex
1.main 2 .main__side 3 %ul 4 %li スポーツ 5 %li お笑い 6 %li 7 =link_to '本', category_path(post) 8 %li 経済 9 .contents 10 .main-space 11 %h1 あなたへのおすすめ 12 = render partial: "/posts/index/post", collection: @posts
pathのid部分に何を入れるべきなのかが不鮮明なので、もしよろしければヒントなどくださるとありがたいです。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/05/09 08:18
2020/05/09 08:40
2020/05/09 10:26
2020/05/09 10:31
2020/05/09 10:36