結論、ローカル環境でelasticsearchを起動していないことが原因だった。
メソッドとルート
<%= link_to "削除", "/platforms/#{platform.id}/", method: :delete %>
$ rails routes
new_platform GET /platforms/new(.:format) platforms#new
edit_platform GET /platforms/:id/edit(.:format) platforms#edit
platform PATCH /platforms/:id(.:format) platforms#update
PUT /platforms/:id(.:format) platforms#update
DELETE /platforms/:id(.:format) platforms#destroy
GET /platforms/:id(.:format) platforms#show
ルートは正しい(/new
や/edit
と違って/destroy
や/deleteと誤タイプしないように注意)。
ログを良く見たら、エラーの原因は使っているsearchkick
のもととなるelasticsearchを起動していないことが原因だった‥。データが更新されたときに再インデックスが走るようにしていたが、destroyでもこれが呼ばれるために起こったようだ。
> Platform Store (28.3ms) {"id":138,"exception":["NameError","uninitialized constant Faraday::Error::ConnectionFailed\nDid you mean? Faraday::ConnectionFailed"],"exception_object":"uninitialized constant Faraday::Error::ConnectionFailed\nDid you mean? Faraday::ConnectionFailed"}
Completed 500 Internal Server Error in 42ms (Searchkick: 28.3ms | ActiveRecord: 4.7ms | Allocations: 10950)
NameError (uninitialized constant Faraday::Error::ConnectionFailed
Did you mean? Faraday::ConnectionFailed):