質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

812閲覧

Rails チャットアプリへのコメント機能を実装したい

shijimi_

総合スコア3

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2021/07/27 03:57

編集2021/07/28 04:38

前提・実現したいこと
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 %>

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

一度form_forのオプションでcontrollerを指定して試してみてください

投稿2021/07/31 08:12

J_O

総合スコア143

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

shijimi_

2021/07/31 08:38

ご助言ありがとうございます。試してみます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問