ログインをしていないときでもユーザーの投稿したコメントを表示できるようにしたいのですが、ログインしていないと表示されません。
#問題のソースコード
コメントを表示するページ
<div class="content"> <div class="user-about"> <div class="image"> <% if @post.user.image.attached? %> <%= image_tag @post.user.image %> <% else %> <%= image_tag no.user.png %> <% end %> </div> <div class="profile"> <div class="name-history"> <div class="name"> <%= @post.user.nickname %> </div> <div class="mania-histry"> <%= "学習歴:#{@post.user.mania_histry}年" %> </div> </div> <div class="enjoy-point"> <%= "楽しいポイント#{@post.user.enjoy_point}"%> </div> </div> </div> <div class="text"> <p><%= @post.content %></p> </div> <% if @post.images.attached? %> <% @post.images.each do |image| %> <div class = 'images'> <%= image_tag image %> </div> <% end %> <% end %> <div class="action-menu"> <% if user_signed_in? %> <div class="like"> <h3>いいね件数: <%= @post.likes.count %></h3> <div class = 'like-button'> <% if current_user.liked_by?(@post.id) %> <td><%= link_to 'いいねを外す', destroy_like_path(@post), class: "like-link", method: :DELETE %></td> <i class="fa fa-heart unlike-btn"></i> <% else %> <td><%= link_to 'いいね', create_like_path(@post), class: "like-link", method: :create %></td> <i class="fa fa-heart like-btn"></i> <% end %> </div> <div class ="comment"> <%if user_signed_in?%> <%= form_for [@post, @comment] do |f| %> <%= f.text_area :comment, size: "40x2" %> <%= f.submit '送信', class: "btn-sm btn-primary" %> <% end %> <% end %> </div> <% @comments.each do |comment| %> <div class="comment-user"> <tr> <td><%= comment.user.nickname %>:</td> <td><%= comment.comment %></td> <td><%= link_to "削除", post_comment_path(@post, comment), method: :delete %></td> </tr> <% end %> </div> </div> <% end %> </div> </div> </div>
コメントに関するコントローラー
class CommentsController < ApplicationController before_action :authenticate_user! , only: [:edit, :show, :destroy] def create @post = Post.find(params[:post_id]) @comment = @post.comments.new(comment_params) @comment.user_id = current_user.id if @comment.save redirect_to request.referer else @post_new = Book.new @comments = @post.comments redirect_to new_post_path end end def destroy @post = Post.find(params[:post_id]) @comment = Comment.find(params[:id]) @comment.destroy redirect_to request.referer end private def comment_params params.require(:comment).permit(:comment) end end
もう一つあるのでそちらを載せておきます。
class PostsController < ApplicationController before_action :authenticate_user!, only: [:new, :update, :create, :edit, :update, :destroy] before_action :find_post, only: [:edit, :update, :show, :destroy] def index @posts = Post.all.order(id: "DESC") @like = Like.new end def new @post = Post.new end def show @comment = Comment.new @comments = @post.comments.order(id: "DESC") end def create @post = current_user @post = Post.create(post_params) if @post.save redirect_to root_path,notice:'投稿に成功しました' else redirect_to new_post_path,notice:'投稿に失敗しました' end end def edit end def update @post.update(post_params) end def destroy if @post.destroy redirect_to root_path,alert: '投稿を削除しました' else redirect_to root_path end end private def post_params params.require(:post).permit(:content, {images: []}).merge(user_id: current_user.id) end def find_post @post = Post.find(params[:id]) end def force_redirect_unless_my_post return redirect_to root_path,alert:'権限がありません'if @post.user != current_user end end
コメントに関するモデル
class Comment < ApplicationRecord belongs_to :user belongs_to :post end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/29 10:51