railsアプリケーションを作っていて、画像をアップロードする機能を作っていて
投稿するboardモデル、コメントをするcommentモデル、ログインするuserモデルがあります(devise)
ログインしている人のみコメントを投稿するようにしたいのですが以下の写真の通りcontroller内の記述が間違っているせいかうまく機能しません。
どこが間違えているのかがわからないためもしわかる方がいればアドバイスいただければ幸いです。。モデルの関連などはできていると思います。
宜しくお願いします
【boards.controller】
board.controller.rb
1class BoardsController < ApplicationController 2 before_action :authenticate_user! 3 before_action :set_target_board, only: %i[show edit update destroy] 4 5 def index 6 @boards = Board.all 7 end 8 9 def new 10 @board = Board.new(flash[:board] 11 ) 12 end 13 14 def create 15 @board = current_user.boards.new(board_params) 16 17 if @board.save 18 flash[:notice] = "「#{@board.title}」の掲示板を作成しました" 19 redirect_to root_path 20 else 21 redirect_to :back, flash: { 22 board: @board, 23 error_messages: board.errors.full_messages 24 } 25 end 26 end 27 28 def show 29 @comments = @board.comments 30 @comment = current_user.comments.new 31 end 32 33 def edit 34 end 35 36 def update 37 if @board.update(board_params) 38 redirect_to @board 39 else 40 redirect_to :back, flash: { 41 board: @board, 42 error_messages: @board.errors.full_messages 43 } 44 end 45 end 46 47 def destroy 48 @board.delete 49 redirect_to boards_path, flash: { notice: "「#{@board.name}」の掲示板が削除されました" } 50 end 51 52 private 53 54 def board_params 55 params.require(:board).permit(:name, :image, :body) 56 57 end 58 59 60 61 def set_target_board 62 @board = Board.find(params[:id]) 63 end 64end
【comments.controller】
class CommentsController < ApplicationController def create @comment = current_user.comments.new(comment_params) if @comment.save flash[:notice] = "コメントを投稿しました" redirect_to root_path else flash[:error_messages]= @comment.errors.full_messages redirect_back root_path end end def destroy comment = Comment.find(params[:id]) comment.delete redirect_to comment.board, flash: {notice: "コメントが削除されました"} end private def comment_params params.require(:comment).permit(:board_id, :name, :comment) end end
【パーシャル】
<%= render partial: "shared/error_messages"%> <div class="p-comment__formBox"> <p class="p-comment__formTitle">コメント投稿欄</p> <%= form_with (model: [@comment,@board], local:true) do |f| %> <%= f.hidden_field :board_id %> <div class="form-group"> <%= f.label :name, '名前' %> <%= f.text_field :name, class: 'form-control' %> </div> <div class="form-group"> <%= f.label :comment, 'コメント' %> <%= f.text_area :comment, class: 'form-control', rows: 4 %> </div> <%= f.submit '送信', class: 'btn btn-primary' %> <% end %> </div>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
退会済みユーザー
2020/09/26 02:28