• Home
  • Rails7で削除ボタンが効かない時の対処法

Rails7で削除ボタンが効かない時の対処法

記事のサムネイル

Railsガイドのハンズオンを進めている際の削除ボタンの実装で詰まった時のお話です。

概要

Railsガイドに言われるまま削除ボタンを実装しました。

<h1><%= @article.title %></h1>

<p><%= @article.body %></p>

<ul>
  <li><%= link_to "Edit", edit_article_path(@article) %></li>
  <li><%= link_to "Destroy", article_path(@article), data: {
                    turbo_method: :delete,
                    turbo_confirm: "Are you sure?"
                  } %></li>
</ul>

しかし、削除ボタンをクリックしても確認ダイアログも表示されず、記事の削除もできませんでした。

解決方法

以下のコマンドを実行してimportmap、turbo、stimulusを有効にする。

rails importmap:install
rails turbo:install stimulus:install

※gemがインストールされていない場合は下記コマンドでgemをインストールしてから実行してください。

gem "importmap-rails" #ESMとimportmapを使用して、トランスパイルやバンドルなしでRailsのモダンなJavaScriptを管理

gem "turbo-rails" #JavaScriptを一切記述することなく、シングルページのWebアプリケーションのようなスピードを実現

gem "stimulus-rails" #あなたがすでに持っているHTMLのための控えめなJavaScriptフレームワーク

原因

原因としてRuby on Rails 7.0では、rails-ujsが標準構成から外れ、Turboが標準構成に入ったことが挙げられます。
それに伴い、Deleteが機能せず、確認メッセージも表示されなくなりました。

Turbo Framesとは

Turbo Framesは、Webアプリケーションの一部分を非同期的に更新するための技術であり、Turboフレームワークの一部です。

Turboを利用することでページの全体を再読み込みすることなく、特定の一部分だけを更新できます。

これにより、ユーザーエクスペリエンスが向上し、ページ遷移の待ち時間が少なくなります。

Turbo Framesは、リンクのクリック時やフォームのサブミット時にサーバーから部分的なページを取得し、現在のページに追加または置換します。

これにより、必要な情報を素早く取得できます。

Turbo FramesはTurboフレームワークの一部であり、Railsで使用する場合はturbo-railsというgemが提供されており、TurboとRailsの統合を簡単に行うことができます。

Gemをインストールすることで、Turbo Framesの機能を利用し、Railsアプリケーション内で非同期通信を実装できます。

rails-ujsとは

rails-ujsは、Rails6以前に組み込まれているJavaScriptライブラリで、Webアプリケーションのインタラクティブな機能を強化します。

主な役割は非同期通信(Ajax)のサポート、リモートフォームの処理、リンクの処理、JavaScriptのリモート実行になります。

rails-ujsはRailsアプリケーションで簡単に使え、初心者の方でも理解しやすいのが特徴です。

実装やエラーが解決できない場合

プログラミングの実装やエラーでどうしてもわからない場合はメンターに相談するのが一番です。

考えている、見えている範囲が狭くなり、解決から遠くに行って何時間も、何日も経っていることなんてよくある話です。

そういう時は聞ける先輩や、メンターに相談することが大事です。

僕にも相談可能なので気軽に相談してください。

ご相談はこちら
(Twitterのプロフィールへ飛びます)

OTHER ARTICLES

  • Web制作

  • Rails

railsでjsではなくrubyでtooltipの単位を設定するときの話

2024/08/20
  • Web制作

  • Rails

Railsにおけるクラスメソッドとインスタンスメソッドの違いについて

2024/05/30
  • Web制作

  • Docker

  • Rails

DockerでRails7 + PostgreSQL + esbuildの環境を構築する方法

2024/05/16
  • Web制作

  • Rails

  • Docker

Dockerで建てたrails7環境で「undefined method `devise' for 〜」が発生した話

2024/05/16
  • Web制作

  • Rails

Ruby on RailsのルーティングとRESTfulルート

2024/05/09
  • Web制作

  • Rails

Ruby on Railsにおけるresourceとresourcesの違い

2024/05/01
管理者のイメージ画像

PROFILE

Youta

山口県出身の現役のWebエンジニアです。仕事を通して学んだことや、生活していく中で学んだことを発信していきます。

CATEGORY