前提・実現したいこと
RubyonRailsにおいて、
food、user、commentモデルの実装でcommentのcontentカラムを保存したいです。
発生している問題・エラーメッセージ
ログを見ても、保存ができておらず、解決策に困っています。
わかる方、いらっしゃいましたらアドバイスいただきたいです。
よろしくお願いいたします。
該当のソースコード
log
1Started POST "/foods/3/comments" for ::1 at 2020-03-25 20:33:04 +0900 2Processing by CommentsController#create as HTML 3 Parameters: 4{ 5 "authenticity_token" => "bm931f87IA3T5H8cBDIbBMBYwp5jx26e2pHa8Nf/INm1ouKzH/0lTClEmHK83VfBaVSgwhFID+I2Qsoy/o5NRw==", 6 "comment" => { 7 "content" => "美味しい" 8 }, 9 "commit" => "コメントする", 10 "food_id" => "3" 11} 12 User Load (0.8ms) 13 SELECT 14 `users`. * 15 FROM 16 `users` 17 WHERE 18 `users`.`id` = 5 LIMIT 1 19 ↳ app/helpers/sessions_helper.rb:7:in `current_user' 20 CACHE User Load (0.0ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 5 LIMIT 1 [["id", 5], ["LIMIT", 1]] 21 ↳ app/controllers/comments_controller.rb:6:in `create' 22Redirected to http://localhost:3000/foods 23Completed 302 Found in 19ms (ActiveRecord: 0.9ms | Allocations: 10029)
foods/show.htm.erb
<h4>投稿詳細ページ</h4> <%=@food.name%> <%=@food.description%> <h4>コメント欄</h4> <%form_with%> <%=%> <%=%> <br> <h4>食品に対するコメント一覧</h4> <%@comments.each do |c|%> <%=c.content%> <%end%> <br> <h4>コメント</4> <%=form_with model:[@food, @comment],local: true do |f|%> <%= f.text_field :content %> <br> <%= f.submit 'コメントする' %> <%end%>
comments.controller.rb
class CommentsController < ApplicationController def create @comment = Comment.new(comment_params) @comment.user_id = current_user.id if @comment.save redirect_to food_url else redirect_to foods_url end end def destroy end private def comment_params params.require(:comment).permit(:content) end end
foodsController.rb
class FoodsController < ApplicationController before_action :require_user_logged_in def index @foods = Food.all end def show @food = Food.find(params[:id]) @comments = @food.comments @comment = Comment.new end def new @food = Food.new end def create @food = current_user.foods.build(food_params) @food.user_id = current_user.id if @food.save redirect_to foods_url else render :new end end private def food_params params.require(:food).permit(:name,:description) end end
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。