前提・実現したいこと
写真投稿アプリの削除機能を追加しています。
しかし、下記のようなエラーが出ており、destroyアクションだけ作動せずにいます。
エラーの原因がわかる方、どうかご教授願います。
発生している問題・エラーメッセージ
Routing Error No route matches [GET] "/tweets/5"
写真投稿アプリの削除機能を実装しているのですが、削除ボタンを押すと、上記のような、エラーが出てしまいます。
ここで、ツイート情報を取得できていないのかと思い、editアクションとupdateアクションを追加してみましたが、こちらはうまくいきました。
該当のソースコード
index.html.haml
haml
1%main 2 %section.TweetField 3 - @tweets.each do |tweet| 4 %article.PostedItem 5 .ArticleHeader 6 7 %ul.More 8 %li 9 = link_to "#", class: "More" do 10 11 = icon('fas', 'bars') 12 %ul 13 %li 14 = link_to '削除', tweet_path(tweet.id), method: :delete 15 %li 16 = link_to '編集', edit_tweet_path(tweet.id), method: :get 17 %li 18 = link_to 'Child3', "#" 19 %li 20 = link_to 'Child4', "#" 21 %li 22 = link_to 'Child5', "#" 23 24 .Picture 25 .content_post{style: "background-image: url(#{tweet.image})"} 26 .ReactionBtn 27 = icon('fas', 'star', class: 'ReactionBtn__good') 28 .Details 29 = tweet.name 30 %span<> 31 = tweet.text
destroy.html.haml
haml
1.Contents 2 .Success 3 %h3 4 削除が完了しました。 5 %a.btn{href: "/"} 投稿一覧へ戻る
tweets_controller.rb
ruby
1class TweetsController < ApplicationController 2 3 def index 4 @tweets = Tweet.all 5 end 6 7 def new 8 @tweet = Tweet.new 9 end 10 11 def create 12 Tweet.create(tweet_params) 13 end 14 15 def destroy 16 tweet = Tweet.find(params[:id]) 17 tweet.destroy 18 end 19 20 def edit 21 @tweet = Tweet.find(params[:id]) 22 end 23 24 def update 25 tweet = Tweet.find(params[:id]) 26 tweet.update(tweet_params) 27 end 28 29 private 30 def tweet_params 31 params.require(:tweet).permit(:name, :image, :text) 32 end 33 34end
routes.rb
ruby
1Rails.application.routes.draw do 2 # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html 3 root to: 'tweets#index' 4 resources :tweets, only: [:index, :new, :create, :destroy, :edit, :update] 5end
ターミナル(rails routes)
terminal
1 Prefix Verb URI Pattern Controller#Action 2 root GET / tweets#index 3 tweets GET /tweets(.:format) tweets#index 4 POST /tweets(.:format) tweets#create 5 new_tweet GET /tweets/new(.:format) tweets#new 6 edit_tweet GET /tweets/:id/edit(.:format) tweets#edit 7 tweet DELETE /tweets/:id(.:format) tweets#destroy
ターミナル(エラー時のローカルサーバ)
terminal
1Started GET "/tweets/2" for ::1 at 2020-07-25 20:17:43 +0900 2 (2.8ms) SELECT "schema_migrations"."version" FROM "schema_migrations" ORDER BY "schema_migrations"."version" ASC 3 4ActionController::RoutingError (No route matches [GET] "/tweets/2"): 5 6actionpack (6.0.3.2) lib/action_dispatch/middleware/debug_exceptions.rb:36:in `call' 7web-console (4.0.4) lib/web_console/middleware.rb:132:in `call_app' 8web-console (4.0.4) lib/web_console/middleware.rb:28:in `block in call' 9web-console (4.0.4) lib/web_console/middleware.rb:17:in `catch' 10web-console (4.0.4) lib/web_console/middleware.rb:17:in `call' 11actionpack (6.0.3.2) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' 12railties (6.0.3.2) lib/rails/rack/logger.rb:37:in `call_app' 13railties (6.0.3.2) lib/rails/rack/logger.rb:26:in `block in call' 14activesupport (6.0.3.2) lib/active_support/tagged_logging.rb:80:in `block in tagged' 15activesupport (6.0.3.2) lib/active_support/tagged_logging.rb:28:in `tagged' 16activesupport (6.0.3.2) lib/active_support/tagged_logging.rb:80:in `tagged' 17railties (6.0.3.2) lib/rails/rack/logger.rb:26:in `call' 18sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' 19actionpack (6.0.3.2) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' 20actionpack (6.0.3.2) lib/action_dispatch/middleware/request_id.rb:27:in `call' 21rack (2.2.3) lib/rack/method_override.rb:24:in `call' 22rack (2.2.3) lib/rack/runtime.rb:22:in `call' 23activesupport (6.0.3.2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' 24actionpack (6.0.3.2) lib/action_dispatch/middleware/executor.rb:14:in `call' 25actionpack (6.0.3.2) lib/action_dispatch/middleware/static.rb:126:in `call' 26rack (2.2.3) lib/rack/sendfile.rb:110:in `call' 27actionpack (6.0.3.2) lib/action_dispatch/middleware/host_authorization.rb:82:in `call' 28webpacker (4.2.2) lib/webpacker/dev_server_proxy.rb:23:in `perform_request' 29rack-proxy (0.6.5) lib/rack/proxy.rb:57:in `call' 30railties (6.0.3.2) lib/rails/engine.rb:527:in `call' 31puma (3.12.6) lib/puma/configuration.rb:227:in `call' 32puma (3.12.6) lib/puma/server.rb:706:in `handle_request' 33puma (3.12.6) lib/puma/server.rb:476:in `process_client' 34puma (3.12.6) lib/puma/server.rb:334:in `block in run' 35puma (3.12.6) lib/puma/thread_pool.rb:135:in `block in spawn_thread' 36 37
試したこと
・hamlの記法が間違っているかと思い、別のファイルでerb文をhamlに変換したが、特に間違っているところは見当たらなかった。
ファイル名、フォルダ名のスペルミスを探してみたが、特に問題はなかった。
prefixも確認してみたが、パスが間違っている感じではなかった、
erb文に書き直してみたが、こちらもうまく作動しなかった。
ターミナルのコンソールで、直接削除を試みたら、こちらは問題なく削除できた。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
rails 6.0.0
gem "haml-rails", ">= 1.0", '<= 2.0.1'
gem 'pg', '>= 0.18', '< 2.0'
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/07/25 13:41