Добрый день.
В "рельсах" я новичок, поэтому буду задавать глупые вопросы ))
У меня проблема с Rails 5.1, казалось бы, в самом неожиданном месте...
Имеем контроллер TestsController и модель Test в БД.
Пытаюсь создать для них стандартные маршруты (routes.rb):
resources :tests
Маршруты создаются:
tests GET /tests(.:format) tests#index
POST /tests(.:format) tests#create
new_test GET /tests/new(.:format) tests#new
edit_test GET /tests/:id/edit(.:format) tests#edit
test PATCH /tests/:id(.:format) tests#update
PUT /tests/:id(.:format) tests#update
DELETE /tests/:id(.:format) tests#destroy
Index и new/create работают, как и должны, а вот с edit/update вопрос.
Форма редактирования:
<%= form_with model: @test do |form| %>
...
Вроде даже формирует правильный html, в соответствии с документацией:
<form action="/tests/288" accept-charset="UTF-8" data-remote="true" method="post">
<input type="hidden" name="_method" value="patch" />
...
Но при отправке запроса, я всегда получаю ошибку:
No route matches [POST] "/tests/288"
Т.е. запрос, по идее должен обработаться в Rails, как PATCH, но этого не происходит, он всегда воспринимается, как POST.
Подскажите, пожалуйста, что нужно проверить, чтобы все-таки заработал PATCH?
UPD
Согласно посту, предлагается подключить к проекту rails-ujs, что я и сделал. Однако ошибку это не исправило, она по прежнему есть, но теперь в javascript:
POST http://localhost:3000/tests/289 404 (Not Found)
Rails.ajax @ application-a4b54ac3a3b7244f9d4baffe76072e24d3eaea04129b5eac919dc5ad4ab1233d.js:844
Rails.handleRemote @ application-a4b54ac3a3b7244f9d4baffe76072e24d3eaea04129b5eac919dc5ad4ab1233d.js:1201
(anonymous) @ application-a4b54ac3a3b7244f9d4baffe76072e24d3eaea04129b5eac919dc5ad4ab1233d.js:801