Rails зациклить и удалить объект как администратор - PullRequest
0 голосов
/ 27 июня 2018

Следующий цикл показывает каждый комментарий, связанный с конкретным элементом, и позволяет владельцу комментария (пользователю) редактировать или удалять комментарий. Это работает просто отлично.

Теперь я хотел бы, чтобы администратор мог удалить комментарий. Единственная проблема заключается в том, что когда я нажимаю на кнопку удаления, удаляются все комментарии, связанные с конкретным элементом, а не только этот.

Есть идеи, как это исправить?

<% @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)

1 Ответ

0 голосов
/ 27 июня 2018

Я догадываюсь, что ваши маршруты не настроены правильно. Вы можете нажать

rails routes

для проверки конфигурации admin_delete_comment_path.

Попробуйте изменить

admin_destroy_item_comment_path(comment.item_id,comment.id)

до:

destroy_item_comment_path(commend.item_id, comment.id)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...