form_withでパラメーターが送信されているけれど。DB保存されないときの対処について。
##対処法 create!メソッドの利用
まず困ったのが、エラー文が出力されないので、どう対応すべきかわからなかったこと。そこで、検索してみると、コントローラーに記述した、createメソッドをcreate!メソッドに変更する方法。こうすることで保存されない時はエラーメッセージが出力されるため、対応しやすいとのことだった。
def create
@event = Event.create!(event_params) #<~ createから変更
if @event.save
redirect_to action: :index, notice: "イベントを作成しました"
else
render :new
end
end
するとエラー文がでた。
##エラーメッセージの確認
エラーメッセージを確認すると、"userがいませんよ"と言う内容だったため、マイグレーションファイルの記述にt.references :user, foreign_key: true
を追加。アソシエーションを確認して訂正したところ保存ができた。
##まとめ
エラー文がでない時は結構精神的にきつい(出てもきついけど)。けど同じように困っている人が多くいるので先人の知恵を借りるのが一番良い。
##参考
https://teratail.com/questions/121213
お世話になりました!
さいごに
プログラミングの初学者です。その日に学んだことを学習の一環としてアウトプットしています。より深く学習していきたいと考えておりますので、内容に誤りがございまいたらご指摘等いただけますと幸いです。
参考図書:パーフェクト Ruby on Rails【増補改訂版】すがわらまさのり/前島真一/橋立友宏/後藤優一/五十嵐邦明