前提・実現したいこと
投稿一覧のカテゴリーが全て表示されてしまうので、投稿に紐づいたカテゴリーだけを表示させたいです。
##現状
以下のようにデータベースに登録しているカテゴリー全てが投稿一覧に表示されてしまいます
これを選択したカテゴリーだけ表示されるようにしたいです。
※すでにshowページでは実装できているんですが、投稿一覧ではなかなか実装できずに困っています。
ブーツがカテゴリーになります。
該当のソースコード
postコントローラー
class PostsController < ApplicationController before_action :authenticate_user!, except: [:index] def index @posts = Post.all @category_parents = Category.where(ancestry: nil) end def new @post = Post.new @category_parent = Category.where(ancestry: nil) end def get_category_children @category_children = Category.find("#{params[:parent_id]}").children end def create @post = Post.new(post_params) @post.user_id = current_user.id if @post.save redirect_to post_path(@post), notice: '投稿されました' else render :new, alert: '投稿できませんでした' end end def show @post = Post.find(params[:id]) @comment = Comment.new @comments = @post.comments.includes(:user) @category_id = @post.category_id @category_parent = Category.find(@category_id).parent end def edit @post = Post.find(params[:id]) if @post.user != current_user redirect_to posts_path, alert: '不正なアクセスです' end end def update @post = Post.find(params[:id]) if @post.update(post_params) redirect_to post_path(@post), notice: '投稿が更新されました' else render :edit end end def destroy post = Post.find(params[:id]) post.destroy redirect_to posts_path end private def post_params params.require(:post).permit(:title, :body, :image, :category_id) end end
.posts-index - @posts.each do |post| .posts-box .posts-box__image = link_to post_path(post) do = attachment_image_tag post, :image .posts-profile-box .posts-profile-box__image = link_to user_path(post.user.id) do = attachment_image_tag post.user, :profile_image, fallback: "no-image.png" .posts-profile-box__username %h1= link_to post.user.name, user_path(post.user.id) .posts-profile-box__favoritesBox .posts-profile-box__favoritesBox__favorite %div{id: "favorite_#{post.id}", style: "display: flex;"} = render partial: "favorites/favorite", locals: { post: post } .posts-profile-updateat = post.updated_at.strftime("%Y-%m-%d %H:%M") -------------------------------------------------------------- カテゴリーの表示 .category - @category_parents.each do |parent| %li = parent.name %li.aaaaaaaa - parent.children.each do |child| %li =child.name
showページ
.postWrapper .postWrapper__each-show-box .postWrapper__each-show-box__profile .postWrapper__each-show-box__profile__image = link_to user_path(@post.user) do = attachment_image_tag @post.user, :profile_image, fallback: "no-image.png", size: "100x100" .postWrapper__each-show-box__profile__username = link_to user_path(@post.user) do = @post.user.name .postWrapper__each-show-box__main-image = attachment_image_tag @post, :image, size: "710x600" .postWrapper__each-show-box__main-contents .postWrapper__each-show-box__main-contents__top .postWrapper__each-show-box__main-contents__top__title = @post.title .postWrapper__each-show-box__main-contents__top__favoritesBox %div{id: "favorite_#{@post.id}"} = render partial: "favorites/favorite", locals: { post: @post } .postWrapper__each-show-box__main-contents__edit-btn - if @post.user.id == current_user.id = link_to "編集", edit_post_path(@post) -------------------------------------------------------- カテゴリー .category_parent = @post.category.name
試したこと
showページのようにindexにも@post.category.nameを書くと、
undefined method `category' for nil:NilClassとなる。
- @category_parents.each do |parent| %li = @post.category.name←該当エラー発生 %li.aaaaaaaa - parent.children.each do |child| %li
お手数おかけしますが、よろしくお願いいたします。
本来であれば、投稿日時の下にカテゴリーが表示されるようになる。
if @post.present?をつけて新たに投稿したのは画像の6
カテゴリーのデータベースについては、質問文に記載あり
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/09/04 10:07