前提・実現したいこと
Ruby on Railsでチャットアプリを制作しています。
発生している問題・エラーメッセージ
その中でチャットへのコメント機能を実装したいのですが、フォームのコメントボタンを押しても何も起こらなくなってしまい、エラーも表示されません。
当初ルーティングにエラーが出たため、下記コード太線の通り変更しましたら、エラーは消えたものの、コメント画面への遷移をできなくなってしまいました。
お手数おかけいたしまして大変恐縮ですが、ご教示いただけますと幸いです。
よろしくお願いいたします。
該当のソースコード
Rails.application.routes.draw do root to: 'toppages#index' get 'login', to: 'sessions#new' post 'login', to: 'sessions#create' delete 'logout', to: 'sessions#destroy' get 'signup', to: 'users#new' get 'comment', to: 'comments#create' resources :users do member do get :followings get :followers end end resources :posts, only: [:create, :destroy] do resources :comments, only: [:create, :destroy] end resources :relationships, only: [:create, :destroy] end
class Comment < ApplicationRecord belongs_to :user belongs_to :post validates :comment_content, presence: true, length: { maximum: 255 } end
class CommentsController < ApplicationController before_action :require_user_logged_in def create @comment = current_user.comments.new(comment_params) if @comment.save flash[:success] = 'コメントを投稿しました。' redirect_back(fallback_location: root_path) else redirect_back(fallback_location: root_path) end end def destroy @comment.destroy flash[:success] = 'コメントを削除しました。' redirect_back(fallback_location: root_path) end private def comment_params params.permit(:comment_content, :post_id) end end
#PostController <% if posts.any? %> <ul class="list-unstyled mt-2"> <% posts.each do |post| %> <li class="d-flex"> <img class="rounded me-2 mb-5" src="<%= gravatar_url(post.user, { size: 64 }) %>" alt=""> <div> <div> <%= link_to post.user.name, user_path(post.user), class: "text-decoration-none" %> <span class="text-muted">posted at <%= post.created_at %></span> </div> <div> <p><%= post.content %></p> </div> <div> <% if current_user == post.user %> <%= link_to "Delete", post, method: :delete, data: { confirm: "You sure?" }, class: 'btn btn-danger btn-sm' %> <% else %> <%= link_to 'Comment', comment_path(@post), class: 'btn btn-primary btn-sm' %> <% end %> </div> <div> </div> </div> </li> <% end %> </ul> <%== pagy_bootstrap_nav(@pagy) %> <% end %>
コメント投稿画面 <p> <strong>Post:</strong> <%= @post.post %> </p> <h3>Comments</h3> <% @post.comments.each do |comment|%> <ul> <li><%= comment.body %> <span> <% if comment.user_id == current_user.id %> <%= link_to '[X]', post_comment_path, method: :delete %> <% end %> </span> </li> </ul> <% end %> <%= form_for [@post, @post.comments.build] do |f| %> <div class="field"> <%= f.text_field :body, autofocus: true, autocomplete: "body" %> </div> <div class="field"> <%= f.hidden_field :user_id, value: current_user.id %> </div> <div class="actions"> <%= f.submit %> </div> <% end %>
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/07/31 08:38