@kouki2000 (今村 光基)

Are you sure you want to delete the question?

Leaving a resolved question undeleted may help others!

データベースにデータが保存されません

Q&A

Closed

解決したいこと

投稿へのコメント機能実装中にフォームからコメント送信し、コントローラーのcreateアクションが実行されコメントが保存されるか確認したところテーブルへの保存がされませんでした。createアクションの実行まではされているのですがエラー表示も無く、コード間違いもないように思うので行き詰まっています。解決方法思いつく方いらっしゃいましたらご教授願います。

該当するソースコード

 views/recruitments/show.html.erb

  <% if user_signed_in? %>
    <%= form_with model: [@recruitment, @comment], id: "comment-form" do |f| %>
      <%= f.text_area :comment , class: "comment-text"%>
      <%= f.submit "コメントをする", class: "comment-submit" %>
    <% end %>
  <% end %>

実際のページが以下の画像です。
Image from Gyazo
↓これで送信してみます

controllers/comments_controller.rb
class CommentsController < ApplicationController

  def create
    @comment = Comment.new(comment_params)
    binding.pry
    if @comment.save
      redirect_to recruitment_path(params[:recruitment_id])
    end
  end

  private
  def comment_params
    params.require(:comment).permit(:comment).merge(user_id: current_user.id, recruitment_id: params[:recruitment_id])
  end

end

上記のbinding.pryを試してみた結果が以下の通りで、paramsを確認すると中身は来ているようですが保存処理はされていないという状況です。
Image from Gyazo

0 likes

1Answer

validationに引っかかっている可能性があります。
以下のように書き換え、実行結果を確認してください。

def create
  @comment = Comment.new(comment_params)
  binding.pry
  if @comment.save
    redirect_to recruitment_path(params[:recruitment_id])
  end

  p @comment.errors.full_messages # ここでbinding.pryして `@comment.errors.full_messages`を実行しても良いです。
end

saveはvalidationを実行し、問題なければDBに保存しにいきます。
save時に実行したvalidationで問題があった場合、モデルインスタンスのerrorsに情報を入れます。
errorsの中を確認すれば、validationでどのような問題があったかわかるはずです。

0Like

Comments

  1. @kouki2000

    Questioner

    エラーメッセージの内容からコメントモデルでのアソシエーションに記述間違いがあることがわかり解決しました!ありがとうございました!

Your answer might help someone💌