コメント機能の保存について
解決したいこと
コメントの保存と表示を行いたいのですが、DBに保存されず躓いております。
どなたか解決方法を教えて下さると幸いです。
発生している問題・エラー
Started GET "/items/1?authenticity_token=y%2FoFtP94bxQT3H%2F3b5cxTtak7qWYdIv%2BUmg1%2B38198FaQn2taQ%2FSFP0w%2Bn5JDjQ3QbOtxTYIEyPX%2BMwJRiB2nQ%3D%3D&comment%5Btext%5D=%E3%81%82%E3%81%82&commit=%E3%82%B3%E3%83%A1%E3%83%B3%E3%83%88%E3%82%92%E3%81%99%E3%82%8B" for ::1 at 2022-02-03 13:48:57 +0900
Processing by ItemsController#show as HTML
Parameters: {"authenticity_token"=>"y/oFtP94bxQT3H/3b5cxTtak7qWYdIv+Umg1+38198FaQn2taQ/SFP0w+n5JDjQ3QbOtxTYIEyPX+MwJRiB2nQ==", "comment"=>{"text"=>"ああ"}, "commit"=>"コメントをする", "id"=>"1"}
Item Load (0.5ms) SELECT `items`.* FROM `items` WHERE `items`.`id` = 1 LIMIT 1
↳ app/controllers/items_controller.rb:63:in `set_item'
Rendering items/show.html.erb within layouts/application
User Load (0.3ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 2 ORDER BY `users`.`id` ASC LIMIT 1
↳ app/views/shared/_header.html.erb:18
Rendered shared/_header.html.erb (Duration: 4.5ms | Allocations: 2329)
ActiveStorage::Attachment Load (0.3ms) SELECT `active_storage_attachments`.* FROM `active_storage_attachments` WHERE `active_storage_attachments`.`record_id` = 1 AND `active_storage_attachments`.`record_type` = 'Item' AND `active_storage_attachments`.`name` = 'images'
↳ app/views/items/show.html.erb:9
ActiveStorage::Blob Load (0.3ms) SELECT `active_storage_blobs`.* FROM `active_storage_blobs` WHERE `active_storage_blobs`.`id` = 1 LIMIT 1
↳ app/views/items/show.html.erb:9
PurchaseManagement Load (0.3ms) SELECT `purchase_managements`.* FROM `purchase_managements` WHERE `purchase_managements`.`item_id` = 1 LIMIT 1
↳ app/views/items/show.html.erb:18
User Load (0.6ms) SELECT `users`.* FROM `users` WHERE `users`.`id` = 1 LIMIT 1
↳ app/views/items/show.html.erb:50
Comment Load (0.4ms) SELECT `comments`.* FROM `comments` WHERE `comments`.`item_id` = 1
↳ app/views/items/show.html.erb:103
Rendered shared/_footer.html.erb (Duration: 5.0ms | Allocations: 1868)
Rendered items/show.html.erb within layouts/application (Duration: 26.6ms | Allocations: 10873)
[Webpacker] Everything's up-to-date. Nothing to do
Completed 200 OK in 78ms (Views: 72.1ms | ActiveRecord: 2.6ms | Allocations: 31931)
上記がコメントを入力した後、ターミナルで表示された内容の全文です。
Parametersの中身や「Completed 200 OK」の表記もあるので挙動に問題がないと思いましたが、添付した画像のように、sequel proには何も反映されておりません。
該当するソースコード
モデル部分
class Comment < ApplicationRecord
belongs_to :user
belongs_to :item
end
class Item < ApplicationRecord
略
has_many :comments
略
end
class User < ApplicationRecord
略
has_many :comments
end
コントローラー部分
class CommentsController < ApplicationController
def create
@comment = Comment.new(comment_params)
if @comment.save
redirect_to item_path(@item)
end
end
private
def comment_params
params.require(:comment).permit(:text).merge(user_id: current_user.id, item_id: params[:item_id])
end
end
class ItemsController < ApplicationController
before_action :set_item, except: [:index ,:new, :create]
before_action :authenticate_user!, only: [:new, :edit]
before_action :diffrent_user, only: [:edit, :update, :destroy]
略
def show
@comment = Comment.new
@comments = @item.comments.includes(:user)
end
略
end
ビュー部分
<div class="comment-box">
<form>
<div id="comments">
<br>
<% if user_signed_in? %>
<%= form_with model: [@item,@comment],id: "comment-form" do |f| %>
<%= f.text_area :text , class: "comment-text"%>
<p class="comment-warn">
相手のことを考え丁寧なコメントを心がけましょう。
<br>
不快な言葉遣いなどは利用制限や退会処分となることがあります。
</p>
<%= f.submit "コメントをする", class: "comment-btn" %>
<%= image_tag "comment.png" ,class:"comment-flag-icon" ,width:"20",height:"25"%>
<%end%>
<%end%>
<h4><コメント一覧></h4>
<% @item.comments.each do |comment| %>
<div class="comment">
<p class="user-info"><%= comment.user.nickname %>: </p>
<p><%= comment.text%></p>
</div>
<% end %>
</div>
</form>
</div>
ルーティング
Rails.application.routes.draw do
devise_for :users
# For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html
root to: "items#index"
resources :items, shallow: true do
resources :comments, only: :create
resources :orders, only:[:index, :create]
end
end
マイグレーション部分
class CreateComments < ActiveRecord::Migration[6.0]
def change
create_table :comments do |t|
t.text :text
t.integer :user_id
t.integer :item_id
t.timestamps
end
end
end
以上です。
お時間を割いてくださってありがとうございます。
質問に不備がございましたら、すぐに追記いたします。
よろしくお願いいたします。
自分で試したこと
CommentsControllerにてbinding.pryを行ったところ、画面が止まらず、効きませんでした。
また、ビューにて<%= form_with model: [@item,@comment],url: item_comments_path, method: :post, id: "comment-form" do |f| %>
とurlとmethodを追加し、コードを変更してみたものの、挙動に変化がございませんでした。