Удалить метод рельсы 6 - PullRequest
       67

Удалить метод рельсы 6

0 голосов
/ 26 марта 2020

Я сделал веб-приложение, которое позволяет пользователю добавлять, редактировать и удалять статьи. Проблема у меня в том, что метод удаления не работает. Когда я нажимаю «Удалить» рядом со статьей, от которой я хочу избавиться, ничего не происходит, я тоже не получаю никаких ошибок. Я думаю, что он действует как метод GET, а не как метод DELETE, но я понятия не имею, почему он не будет работать.

Любая помощь будет принята с благодарностью!

articles_controller.rb

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

index. html .erb

<tbody>
  <% @articles.each do |article| %>
  <tr>
    <td><%= article.title %></td>
        <td><%= article.description %></td>

        <td><%= link_to 'Show', article_path(article) %></td>
        <td><%= link_to 'Edit', edit_article_path(article) %></td>
        <td><%= link_to 'Delete', articles_path(article), method: :delete, data: {confirm: "Are you sure?"} %></td>

  </tr>
  <% end %>

Консоль при нажатии кнопки Удалить:

Started GET "/articles.5" for ::1 at 2020-03-26 16:45:32 +0000
Processing by ArticlesController#index as
  Rendering articles/index.html.erb within layouts/application
  Article Load (0.4ms)  SELECT "articles".* FROM "articles"
  ↳ app/views/articles/index.html.erb:14
  Rendered articles/index.html.erb within layouts/application (Duration: 4.1ms | Allocations: 1596)
[Webpacker] Everything's up-to-date. Nothing to do
  Rendered layouts/_navigation.html.erb (Duration: 0.3ms | Allocations: 85)
Completed 200 OK in 72ms (Views: 70.3ms | ActiveRecord: 0.4ms | Allocations: 8290)

rout.rb

Rails.application.routes.draw do
  root 'pages#home'
  resources :articles, only: [:show, :index, :new, :create, :edit, :update, :destroy]

end

Приложение . js

require("@rails/ujs").start()
require jquery
require jquery_ujs
require bootstrap-sprockets
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")

Ответы [ 2 ]

1 голос
/ 26 марта 2020

Это неверно.

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

Это должно быть ...

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

Используйте путь показа статьи, а не путь индекса арктики.

0 голосов
/ 26 марта 2020

Я нашел решение этой проблемы. Изменяя

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

на

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

Это решило мою проблему.

...