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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

3331閲覧

[Ruby On Rails] No route matches [GET] が表示されdestroyができない

integral_ys

総合スコア11

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2022/01/21 11:29

前提・実現したいこと

railsでレコードの削除機能を作りたく、ネットで調べたやり方を使ってもうまく機能してくれません。

発生している問題・エラーメッセージ

ActionController::RoutingError (No route matches [GET] "/articles/16"):

該当のソースコード

index.html.erb

1<ol> 2 <% @articles.each do |article| %> 3 <li> 4 <%= article.title %><br> 5 <%= article.text %><br> 6 <%= link_to "削除", "/articles/#{article.id}", method: :delete %> 7 </li> 8 <% end %> 9</ol>

Ruby

1#routes.rb 2Rails.application.routes.draw do 3 root "articles#index" 4 5 resources :articles, only: [:index, :new, :create, :destroy] 6end

Ruby

1#articles_controller.rb 2class ArticlesController < ApplicationController 3 protect_from_forgery :except => [:destroy] 4 5 def index 6 @articles = Article.all 7 end 8 9 def new 10 @article = Article.new 11 end 12 13 def create 14 @article = Article.new(article_params) 15 16 if @article.save 17 redirect_to root_path 18 else 19 render :new, status: :unprocessable_entity 20 end 21 end 22 23 def destroy 24 @article = Article.find(params[:id]) 25 @article.destroy 26 27 redirect_to root_path 28 end 29 30 private 31 def article_params 32 params.require(:article).permit(:title, :text) 33 end 34end 35

試したこと

link_toをbutton_toに変更したが変わらなかったです。
https://qiita.com/mami3sansan/items/6a9710b3ffdc937aa5f3
こちらの記事に書かれた内容を試してみたのですがうまくいきませんでした。

補足情報(FW/ツールのバージョンなど)

Mac 12.1
Ruby 3.1.0
Rails 7.0.1

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

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

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

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

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

guest

回答1

0

ベストアンサー

Rails 7では、フロントエンドまわりに手が入れられていて、link_tomethod: :deleteは使えなくなっています。

それ以外にも注意点が多いですので、このあたりを見るとわかりやすいかも知れません。

投稿2022/01/21 13:21

maisumakun

総合スコア145121

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

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

integral_ys

2022/01/21 14:44

教えていただいた記事に書いてあった通り、 <%= link_to "削除", "/articles/#{article.id}", data: { turbo_method: :delete } %> redirect_to root_path, status: :see_other と書き直したらちゃんと動きました! 調べ方が下手でrails7からの仕様出てこずわからなかったので本当に助かりました! ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問