質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.49%
Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

解決済

1回答

1067閲覧

Routing Error No route matches [GET] について

KotaTakahashi

総合スコア8

Haml

Haml(HTML abstraction markup language)は、HTML/XHTMLを効率的に記述するためのマークアップ言語および記法です。

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

1クリップ

投稿2020/07/25 11:31

前提・実現したいこと

写真投稿アプリの削除機能を追加しています。
しかし、下記のようなエラーが出ており、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'

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

rails-ujsあるいはjquery-ujsといったJavaScriptライブラリは入れていますでしょうか。

destroyを行う際に必要なDELETEのリクエストを行うには、JavaScriptの力を借りる必要があります。

投稿2020/07/25 13:19

maisumakun

総合スコア145183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

KotaTakahashi

2020/07/25 13:41

ご返答ありがとうございます。調べたところまだ導入していませんでした。編集し直してみたいと思います。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.49%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問