Почему метод уничтожения ruby ​​не разрушает? (увидеть ниже) - PullRequest
0 голосов
/ 02 января 2019

Мой контроллер

def destroy
  @article = Article.find(params[:id])
  @article.destroy
  redirect_to articles_path
end

мой взгляд

<td><%= link_to 'Destroy', article_path(article),
              method: :delete,
              data: { confirm: 'Are you sure?' } %></td>

Примечания со страницы учебника: Здесь мы используем link_to по-другому.Мы передаем именованный маршрут в качестве второго аргумента, а затем параметры в качестве другого аргумента.Опции :method и 'data-confirm' используются в качестве атрибутов HTML5, поэтому при щелчке ссылки Rails сначала показывает пользователю диалог подтверждения, а затем отправляет ссылку с методом delete.

Всякий раз, когда я нажимаю кнопку удаления, отображается результат редактирования

сильный текст

Ответы [ 3 ]

0 голосов
/ 02 января 2019

Ваш контроллер код уничтожить действие , а также просмотр код удалить ссылку кажется нормальным, тогда для точного копанияпричина, по которой это не работает, сделать одну вещь, просто открыть консоль и попытаться вручную уничтожить статью с ударом, как было предложено Н.М. Пеннипакером выше.

Article.find (1) .destroy!

0 голосов
/ 03 января 2019

Изначально я немного запутался (поскольку я использую более низкую версию рельсов), позже нашел и прочитал эту статью

Это также прояснит ваше представление о других методах наряду с destroy!

0 голосов
/ 02 января 2019

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

Возможно, что произошел сбой проверки или обратного вызова ассоциации, который вызывает исключение, которое вы не видите. Попробуйте использовать это в качестве метода уничтожения и просматривать журналы сервера после нажатия на ссылку:

def destroy
  @article = Article.find(params[:id])
  @article.destroy!
  redirect_to articles_path
end

Если вы ничего не видите в журнале вашего сервера, возможно, это проблема маршрутизации

...