Следующий цикл показывает каждый комментарий, связанный с конкретным элементом, и позволяет владельцу комментария (пользователю) редактировать или удалять комментарий. Это работает просто отлично.
Теперь я хотел бы, чтобы администратор мог удалить комментарий. Единственная проблема заключается в том, что когда я нажимаю на кнопку удаления, удаляются все комментарии, связанные с конкретным элементом, а не только этот.
Есть идеи, как это исправить?
<% @comments.each do |comment| %>
<% if current_user == comment.user %>
<%= link_to "Delete", destroy_item_comment_path(comment.item_id, comment.id),
method: :delete, data: { confirm: I18n.t("comment_delete_alert")}, :class=>"glyphicon glyphicon-trash" %>
<% elsif current_admin %>
<%= link_to "Delete", admin_destroy_item_comment_path(comment.item_id, comment.id),
method: :delete, data: { confirm: I18n.t("comment_delete_alert")}, :class=>"glyphicon glyphicon-trash" %>
<% end %>
<% end %>
метод контроллера:
before_action :find_comment, only: [:destroy]
def destroy
@comment.destroy
redirect_back(fallback_location: root_path)
flash[:notice] = "Comment has been deleted"
end
def find_comment
@comment = @item.comments.find(params[:id])
end
Обновление 1
журнал сервера при удалении комментария от имени администратора
Comment Load (0.9ms) SELECT "comments".* FROM "comments" WHERE "comments"."user_id" = $1 [["user_id", 213]]
(0.2ms) BEGIN
SQL (0.4ms) DELETE FROM "comments" WHERE "comments"."id" = $1 [["id", 14]]
SQL (0.4ms) DELETE FROM "comments" WHERE "comments"."id" = $1 [["id", 15]]
SQL (0.3ms) DELETE FROM "comments" WHERE "comments"."id" = $1 [["id", 16]]
(1.2ms) COMMIT
Completed 302 Found in 14123ms (ActiveRecord: 36.3ms)