Railsでコメント投稿機能でエラー
解決したいこと
Ruby on railsの学習を始めて3ヶ月経つものです。
Ruby on Railsでコミュニティーサイトを作っています。
投稿した内容にコメント機能を実装したいです。
コメントを投稿ボタンを押した時にコメントが投稿されず、エラーが出ません。またコメント件数も正常に表示されません。
マークダウンに慣れていないので
見づらいところもあると思いますが、よろしくお願いします。
解決方法を教えてください。
発生している問題・エラー
コメントが投稿できない。
コメント件数が出ない。
エラー画面は特に出てないです。
該当するソースコード
class Public::CommentsController < ApplicationController
def create
@trip_article = TripArticle.find(params[:trip_article_id])
@comment = @trip_article.comments.new(comment_params)
@comment.user_id = current_user.id
@comment.save
redirect_to trip_article_path(@trip_article.id)
end
def destroy
Comment.find(params[:id]).destroy
redirect_to trip_article_path(params[:trip_article_id])
end
private
def comment_params
params.require(:comment).permit(:comment, :user_id, :trip_article_id)
end
end
index.html
<% @trip_articles.each do |trip_article| %>
<p><%= image_tag trip_article.user.get_image(50,50) %>
<%= trip_article.user.nickname %></p>
<p><%= image_tag trip_article.get_image(400,500) %></p>
<p>コメント<%= link_to trip_article.comments.count, trip_article_path(trip_article) %>件</p>
<p><%= link_to 'show', trip_article_path(trip_article) %></p>
<p><%= trip_article.title %></p>
<p><%= trip_article.text %></p>
<p><%= trip_article.created_at.strftime('%Y/%m/%d') %></p>
<% end %>
routes.rb
Rails.application.routes.draw do
devise_for :users, skip: [:passwords], controllers: {
registrations: "public/registrations",
sessions: 'public/sessions'
}
scope module: :public do
root to: 'homes#top'
get 'about' => 'homes#about'
get 'users' => 'users#index'
get 'users/mypage/:id' => 'users#show', as: 'users_mypage'
get 'users/:id/edit' => 'users#edit', as: 'edit_user'
patch 'users/:id' => 'users#update', as: 'update_user'
resources :trip_articles do
resources :comments, only: [:create, :destroy]
end
show.html
<% @trip_article.comments.each do |comment| %>
<p><%= image_tag comment.user.get_image(30,30) %></p>
<%= comment.user.nickname %>
<%= comment.created_at.strftime('%Y/%m/%d') %><%= @trip_article.comment %>
<% if comment.user == current_user %>
<%= link_to "削除", trip_article_comment_path(@trip_article.id,comment.id), method: :delete, "data-confirm" => "本当に削除しますか?" %>
<% end %>
<% end %>
<%= form_with model: [@trip_article, @comment], local: false do |f| %>
<%= f.text_area :comment, rows: '5', placeholder: "コメントをここに" %>
<%= f.submit "送信する" %>
<% end %>
Trip_article.rb
class TripArticle < ApplicationRecord
has_one_attached :image
belongs_to :user
has_many :comments, dependent: :destroy
User.rb
class User < ApplicationRecord
# Include default devise modules. Others available are:
# :confirmable, :lockable, :timeoutable, :trackable and :omniauthable
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
has_one_attached :image
has_many :trip_articles
has_many :comments, dependent: :destroy
Comment.rb
class Comment < ApplicationRecord
belongs_to :user
belongs_to :trip_article
belongs_to :admin
validates :comment, presence: true, length: { maximum: 300 }
end
class Public::TripArticlesController < ApplicationController
def show
@trip_article = TripArticle.find(params[:id])
@comment = Comment.new
end
private
def trip_article_params
params.require(:trip_article).permit(:title, :text, :image, :user_id, :comment)
end
end
自分で試したこと
コントローラやviewファイルのルートパスの確認、ルーティングの確認、パラメーターの確認をしましたが
解決できません。
0