前提・実現したいこと
railsにて画像つきの投稿、削除、編集ができるアプリを作っています。
destroyアクション、deleteメソッドで削除を試みているのですが
No route matches [DELETE] のエラーが出ます。
エラーメッセージ
No route matches [DELETE]
該当のソースコード
ruby
1def destroy 2 book = Book.find(params[:id]) 3 book.destroy 4 end 5
ruby
1 2Rails.application.routes.draw do 3devise_for :users 4root to: "books#index" 5resources :books, only:[:index,:new,:create,:show,:edit,:update,:destroy] 6end
ruby
1<%= link_to "削除する", books_path(@book.id),method: :delete %> 2
試したこと
@の削除、bookを複数形にする
rails routesでpathを確認
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
routes.rbの内容もご提示ください。
```ruby
Rails.application.routes.draw do
devise_for :users
root to: "books#index"
resources :books, only:[:index,:new,:create,:show,:edit,:update,:destroy]
end
````
です。ご確認お願いいたします
質問は編集できますし、御覧の通りコメント欄ではマークダウンききません。
delete を明示的に書いてみた場合はどうでしょうか
申し訳ありません、deleteを明示的に書くというのは
どういう意味でしたでしょうか、、、
resources :books, only:[:index,:new,:create,:show,:edit,:update,:destroy]
ではなく
例えば
delete 'books/:id', to: 'books#destroy'
とか。
resources で自動生成されるルーティングを自前で書くということですね。
ご説明ありがとうございます。
delete 'books/:id', to: 'books#destroy' で記載をしても
同様のエラーになりました、。
なるほど。あとはRailsを再起動してみるとか?
method: :deleteではなくmethod: :postとかgetにしてルーティングもかえてみるとか。
リンクではなくformにしてみるとか
postにすると
ActionController::ParameterMissing in BooksController#create
になりました。
link_toタグの
books_path(@book.id)を
book_path(@book_id)とすると
ActiveRecord::RecordNotFound in BooksController#destroy
Couldn't find Book with 'id'=15
というエラーになります
回答1件
あなたの回答
tips
プレビュー