2015-08-12 2 views
0

Я создал блог, в котором есть статьи и комментарии, которые находятся внутри их статьи. Я хочу создать вариант, так что я могу удалить комментарии тоже, но когда я нажимаю на кнопку удаления говорит об ошибке «Не удалось найти комментарий с„ид“= # идентификатор здесь»Как удалить вложенный объект?

resources :articles do 
    resources :comments 
end 

Посмотреть

<div> 
<h4>Comment by <%= comment.author_name %></h4> 
<p><%= comment.body %></p> 
</div> 
<p> <%= link_to "Delete Comment", article_comment_path(@comment.article_id, @comment.article.id), method: :delete %> </p> 

Комментариев Контроллер

def destroy 
    @comment = Comment.find(params[:id]) 
    @comment.destroy 

    redirect_to article_path(@comment.article) 
end 
+1

это поможет '<% = link_to "Удалить комментарий", article_comment_path (ID: @ comment.id, article_id: @ comment.article.id), метод:: удалить%>' – Athar

+1

@Gerep Ваш комментарий не будет работать. Поскольку маршрут вложен. В соответствии с маршрутом, который я вижу, вы не получите помощника 'comment_path' –

+0

@ArupRakshit. Вы правы, я удалю комментарий – Gerep

ответ

1

Вы ссылаетесь на тот же объект статьи с ... @comment.article_id, @comment.article.id .... Попробуйте это:

<%= link_to "Delete Comment", article_comment_path(@comment.article, @comment), method: :delete %> 

Редактировать

теперь я вижу, что вы также пытаются ссылаться на @comment объект после того, как он был разрушен.

def destroy 
    @article = Article.find(params[:article_id]) 
    @comment = Comment.find(params[:id]) 
    @comment.destroy 

    redirect_to article_path(@article) 
end 
+0

Это не проблема. Вы показали это, как OP может написать его намного лучше, это все. –

+0

Нет, он ссылается на объект статьи, как на объект комментария. То, как я в ответе, правильно. – kjmagic13

+0

На самом деле, если идентификатор статьи равен 199, а идентификатор комментария - 4, он попытается удалить комментарий с идентификатором 199 статьи 199, который не существует, следовательно, ошибка: 'Не удалось найти комментарий с 'id' = '. – kjmagic13

Смежные вопросы