2016-05-11 3 views
0

Я пытаюсь запретить всем пользователям редактировать, обновлять и уничтожать комментарии, сделанные к сообщениям на моем форуме. Мне удалось запретить всем пользователям редактировать сообщения, но я не могу решить, что мне нужно сделать, чтобы все пользователи не редактировали комментарии.Только разрешить автору комментариев редактировать, обновлять и уничтожать их?

Я решил почтовый выпуск с этим 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 

Я думаю, что это простое решение, но я не то, что опыт работы с рубином на рельсах только пока.

+0

попробовать это Пандит камень –

+0

От вашего кода, это выглядит как переменная должна быть 'комментария', а не '@ comment' – Santhosh

+0

Спасибо большое, это была ошибка. Я знал, что это было что-то простое :) – Sapsford11

ответ

0

В _comment.html.haml вы используете @comment, что, вероятно, не объявлено нигде. Изменение его comment должно устранить проблему

- if comment.user_id == current_user.id 
0

Вы получаете эту ноль: ошибка NilClass, потому что вы получаете переменную экземпляра @comment nil, поэтому вы не получили user_id из @comment и получили эту ошибку.

Так изменить @comment переменную комментарий и вы получите user_id.

+0

Спасибо, это исправило это :) – Sapsford11