Старые версии HTML поддерживают только GET
и POST
. Более новая версия включает PUT
, PATCH
и DELETE
, которые обрабатываются как XHR(XMLHttpRequest)
запросы или просто AJAX
запросы всеми основными веб-браузерами.
Когда выполняются запросы на PUT, PATCH или DELETE, Rails под капотом с помощью Javascript обрабатывает эти запросы как XHR
запросы к клиенту. Когда Javascript в вашем приложении не работает или отключен, эти запросы будут возвращаться к GET
Теперь вернемся к вашему фрагменту кода, который не работает. У вас есть ниже
<%= button_to 'Delete', {:controller => :users, :action => 'destroy', :id => user.id}%>
button_to
по умолчанию создает форму и отправляет запрос как POST
, если только вы явно не переопределяете его, как вы делаете в первом случае с :method => :delete
. Таким образом, приведенный выше фрагмент кода генерирует URL-адрес, подобный users/1/
, но как POST
, который в конечном итоге дает сбой, поскольку у вас нет такого маршрута, определенного в routes.rb
Разве URL-адрес не должен быть user/destroy/1 ?
Нет, когда вы используете :method => :delete
в своем коде, сгенерированный URL будет users/1
, но запрос будет отправлен как DELETE
, что в конечном итоге будет работать, поскольку это действительный запрос в соответствии с вашими маршрутами, которые определены в routes.rb
person
Pavan
schedule
21.10.2018