Я пытаюсь запретить всем пользователям редактировать, обновлять и уничтожать комментарии, сделанные к сообщениям на моем форуме. Мне удалось запретить всем пользователям редактировать сообщения, но я не могу решить, что мне нужно сделать, чтобы все пользователи не редактировали комментарии.Только разрешить автору комментариев редактировать, обновлять и уничтожать их?
Я решил почтовый выпуск с этим before_action в пост управления:
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"
Я добавил before_action для комментариев в post_controller и пробовал это в _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
Я думаю, что это простое решение, но я не то, что опыт работы с рубином на рельсах только пока.
попробовать это Пандит камень –
От вашего кода, это выглядит как переменная должна быть 'комментария', а не '@ comment' – Santhosh
Спасибо большое, это была ошибка. Я знал, что это было что-то простое :) – Sapsford11