前提・実現したいこと
掲示板アプリを作成中です。userモデル、boardモデル、commentモデルがあります。コメントを書いて、送信ボタンを押すと、ActiveRecord::RecordNotFound in BoardsController#showというエラーが出てしまいます。しかし、テーブルにはエラーが出た部分のコメントは追加されています。
発生している問題・エラーメッセージ
https://gyazo.com/4efc4f60d0bc2e4485e5e7547de2a3ab
該当のソースコード
show.html.erb <div class="board__comments"> <% if @comments %> <% @comments.each do |comment| %> <li class="comments_list"> <%= comment.text %> <%= link_to "#{comment.user.nickname}", "/users/#{comment.user.id}", class: :comment_user %> </li> <% end %> <% end %> </ul> <% if user_signed_in? %> <%= form_with(model: [@board, @comment], local: true ,class: :show_comment ,id: :form) do |f| %> <div class="field"> <%= f.label :text, "コメントを投稿する",class: :show__text %><br /> <%= f.text_area :text ,class: :show__btn%> </div> <div class="actions"> <%= f.submit "送信する", class: :form__btn %> </div> <% end %> <% end %> </div>
boards_controller.rb class BoardsController < ApplicationController def index @boards = Board.includes(:user) end def new @board = Board.new end def create @board = Board.new(board_params) if @board.save redirect_to root_path else render :new end end def show @board = Board.find(params[:id]) ⇦ここがエラー部分 @comment = Comment.new @comments = @board.comments.includes(:user) end def edit @board = Board.find(params[:id]) end def update @board = Board.find(params[:id]) @board.update(board_params) if @board.save redirect_to root_path else render :edit end end def destroy @board = Board.find(params[:id]) @board.destroy redirect_to root_path end private def board_params params.require(:board).permit(:title,:text,:image).merge(user_id: current_user.id) end end
comments_controller.rb class CommentsController < ApplicationController def create @comment = Comment.new(comment_params) if @comment.save redirect_to board_path(@comment.board) else @board = @comment.board @comments = @board.comments render "boards/show" end end private def comment_params params.require(:comment).permit(:text).merge(user_id: current_user.id, board_id: params[:board_id]) end end
routes.rb Rails.application.routes.draw do devise_for :users root to: "boards#index" resources :boards do resources :comments, only: :create end resources :users, only: :show end
試したこと
ルーティング、アソシエーション、データベースはしっかり記述されているか確認した。
補足情報(FW/ツールのバージョンなど)
初投稿です。必要な情報があれば追加で送りますので、よろしくお願いします
app/models/comment.rb を追記してください
回答1件
あなたの回答
tips
プレビュー