如何只让评论的作者编辑、更新和销毁?
How to only let the author of comments edit, update & destroy them?
我试图阻止所有用户编辑、更新和销毁我论坛中对 post 发表的评论。我设法阻止所有用户编辑 posts,但我不知道我需要做什么来阻止所有用户编辑评论。
我在 post 控制器中用这个 before_action 解决了 post 问题:
before_action :post_owner, only: [:edit, :update, :destroy]
这是我的 show.html.haml:
#post_content
%h1= @post.title
%p= @post.content
#comments
%h2
= @post.comments.count
Comments
= render @post.comments
- if user_signed_in?
%h3 Reply to thread
= render'comments/form'
%br/
%hr/
%br
- if @post.user_id == current_user.id
= link_to "Edit", edit_post_path(@post), class: "button"
= link_to "Delete", post_path(@post), method: :delete, data: { confirm: "Are you sure you want to do this?"}, class: "button"
我在 post_controller 中为评论添加了一个 before_action,并在 _comment.html.haml 中尝试了这个:
.comment.clearfix
.content
%p.comment_content= comment.comment
%p.comment_author= comment.user.email
%br/
%br/
%br/
%br/
- if @comment.user_id == current_user.id
= link_to "Edit", edit_post_comment_path(comment.post, comment), class: "button"
= link_to "Delete", [comment.post, comment], method: :delete, data: { confirm: "Are you sure?"}, class: "button"
但是我收到以下错误:
undefined method `user_id' for nil:NilClass
我认为这是一个简单的解决方案,但我还没有在 rails 上使用 ruby 的经验。
你得到这个 nil:NilClass 错误是因为你得到实例变量 @comment nil,所以这就是你没有从 @comment 得到 user_id 而得到这个错误的原因。
因此将 @comment 变量更改为 comment,您将得到 user_id.
在 _comment.html.haml 中,您使用的是 @comment
,它可能未在任何地方声明。将其更改为 comment
应该可以解决问题
- if comment.user_id == current_user.id
我试图阻止所有用户编辑、更新和销毁我论坛中对 post 发表的评论。我设法阻止所有用户编辑 posts,但我不知道我需要做什么来阻止所有用户编辑评论。
我在 post 控制器中用这个 before_action 解决了 post 问题:
before_action :post_owner, only: [:edit, :update, :destroy]
这是我的 show.html.haml:
#post_content
%h1= @post.title
%p= @post.content
#comments
%h2
= @post.comments.count
Comments
= render @post.comments
- if user_signed_in?
%h3 Reply to thread
= render'comments/form'
%br/
%hr/
%br
- if @post.user_id == current_user.id
= link_to "Edit", edit_post_path(@post), class: "button"
= link_to "Delete", post_path(@post), method: :delete, data: { confirm: "Are you sure you want to do this?"}, class: "button"
我在 post_controller 中为评论添加了一个 before_action,并在 _comment.html.haml 中尝试了这个:
.comment.clearfix
.content
%p.comment_content= comment.comment
%p.comment_author= comment.user.email
%br/
%br/
%br/
%br/
- if @comment.user_id == current_user.id
= link_to "Edit", edit_post_comment_path(comment.post, comment), class: "button"
= link_to "Delete", [comment.post, comment], method: :delete, data: { confirm: "Are you sure?"}, class: "button"
但是我收到以下错误:
undefined method `user_id' for nil:NilClass
我认为这是一个简单的解决方案,但我还没有在 rails 上使用 ruby 的经验。
你得到这个 nil:NilClass 错误是因为你得到实例变量 @comment nil,所以这就是你没有从 @comment 得到 user_id 而得到这个错误的原因。
因此将 @comment 变量更改为 comment,您将得到 user_id.
在 _comment.html.haml 中,您使用的是 @comment
,它可能未在任何地方声明。将其更改为 comment
应该可以解决问题
- if comment.user_id == current_user.id