0
0

More than 1 year has passed since last update.

フリマアプリにコメント機能の追加実装をする ※コメントが保存されないエラーが出続けた話。

Last updated at Posted at 2022-11-02

フリマアプリ作成が一段落して、追加の実装としてコメント機能の実装に取り組みます。
itemsコントローラー

 before_action :set_item, only: [:edit, :show,:update]
 def show
    @user = @item.user
    @comment = Comment.new
    @comments = @item.comments.includes(:user)

  end
private
def set_item
    @item = Item.find(params[:id])
  end

commentsコントローラー

class CommentsController < ApplicationController
   def create
      @comment = Comment.new(comment_params)
      if @comment.save
        redirect_to item_path(params[:item_id])
      end
    end
  
    private
    def comment_params
      params.require(:comment).permit(:text).merge(user_id: current_user.id, item_id: params[:item_id])
    end
  end

で、show.html.erbを
この状態から

<%# /商品の概要 %>

  <div class="comment-box">
    <form>
      <textarea class="comment-text"></textarea>
      <p class="comment-warn">
        相手のことを考え丁寧なコメントを心がけましょう。
        <br>
        不快な言葉遣いなどは利用制限や退会処分となることがあります。
      </p>
      <button type="submit" class="comment-btn">
        <%= image_tag "comment.png" ,class:"comment-flag-icon" ,width:"20",height:"25"%>
        <span>コメントする<span>
      </button>
    </form>
  </div>
  <div class="links">
    <a href="#" class="change-item-btn">
      < 前の商品
    </a>
    <a href="#" class="change-item-btn">
      後ろの商品 
    </a>
  </div>
<div class="comment-box">
   <div id="comments">
   <div class="comment-form">
  <% if user_signed_in? %>
    <%= form_with model: [@item, @comment], id: "comment-form" do |f| %>
      <%= f.text_area :text, class: "comment-text"%>
      <%= f.submit "コメントをする", class: "comment-submit" %>
    <% end %>
  <% end %>
</div>
  <h4><コメント一覧></h4>
    <% @item.comments.each do |comment| %>
      <div class="comment">
        <p class="user-info"><%= comment.user.nick_name %>: </p>
        <p><%= comment.text%></p>
      </div>
    <% end %>
</div>
  </div>

この状態へ。
これで一応同期通信であるものの、最低限の機能は実装できた。
あ、ルーティングのネストの設定も忘れずに。

※ずっとコメントが保存されないエラーが出続けていました。
で、何が原因かというと、form_withのメソッドを使う上で、

タグが共存していたことでした。
これ、めっちゃ大事です。
form_withメソッドを使うときはタグは使わないようにしましょう!!!
0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0