質問するログイン新規登録
Ruby on Rails

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

Q&A

解決済

1回答

516閲覧

Ruby on Railsでmethod deleteが効かない

T-N-

総合スコア13

Ruby on Rails

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

0グッド

0クリップ

投稿2024/03/11 12:51

0

0

実現したいこと

家計簿アプリを作成しており、登録したデータを削除する機能を追加したい。

発生している問題・分からないこと

データが削除されない。

エラーメッセージ

error

1エラーメッセージはありません。

該当のソースコード

Rails.application.routes.draw do get "/books", to: "books#index" post "/books", to: "books#create" get "/books/new", to: "books#new", as: "new_book" get "/books/:id/edit", to: "books#edit", as: "edit_book" get "/books/:id", to: "books#show", as: "book" patch "/books/:id", to: "books#update" delete "/books/:id", to: "books#destroy" #該当の処理 end
class BooksController < ApplicationController def index @books = Book.all end def show @book = Book.find(params[:id]) end def new @book = Book.new end def create book_params = params.require(:book).permit(:year, :month, :inout, :category, :amount) @book = Book.new(book_params) if @book.save redirect_to books_path else render :new end end def edit @book = Book.find(params[:id]) end def update @book = Book.find(params[:id]) book_params = params.require(:book).permit(:year, :month, :inout, :category, :amount) if @book.update(book_params) redirect_to books_path else render :edit end end #以下、該当の処理 def destroy @book = Book.find(params[:id]) @book.destroy redirect_to books_path end end
<h1>家計簿</h1> <%= link_to "+新規", new_book_path, class: "btn btn-success" %> <table class="table table-striped"> <tr> <th>年月</th> <th>区分</th> <th>科目</th> <th>金額</th> <th>リンク</th> </tr> <% @books.each do |book| %> <tr> <td><%= book.year %>年<%= book.month %>月</td> <td><%= book.inout %></td> <td><%= book.category %></td> <td><%= book.amount %>万円</td> <td> <%= link_to "詳細", book_path(book), class: "btn btn-info" %> <%= link_to "編集", edit_book_path(book), class: "btn btn-warning" %> <%= link_to "削除", book_path(book), method: "delete", data: {confirm: '本当に削除しますか?'}, class: "btn btn-danger" %> #該当の箇所 </td> </tr> <% end %> </table>

試したこと・調べたこと

  • teratailやGoogle等で検索した
  • ソースコードを自分なりに変更した
  • 知人に聞いた
  • その他
上記の詳細・結果

routes.rbのdeleteの記載を一番上に持っていきましたが、結果は変わりませんでした。

補足

Rails 7.1.3.2
ruby 3.2.1 (2023-02-08 revision 31819e82c8) [x86_64-linux]
開発環境:AWS Cloud9

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

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

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

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

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

guest

回答1

0

ベストアンサー

Rails 7以上では、標準でTurboというJavaScriptライブラリが入りますが、method: "delete"を付けたlink_toはそれ以前のTurbolinksを前提とした書き方です。

入れるライブラリとリンクの書き方を一致させましょう。

投稿2024/03/11 12:55

maisumakun

総合スコア146768

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

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

T-N-

2024/03/12 06:34

回答ありがとうございます。 下記の通り修正したところ、削除できました。 <%= link_to "削除", book_path(book), data: {turbo_method: :delete, turbo_confirm: '本当に削除しますか?'}, class: "btn btn-danger" %> ベストアンサーに選ばせていただきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.30%

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

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

質問する

関連した質問