はじめに
Turboについて簡単に概要だけ学びましたが、実際にコードの中で使用するとなると話はまた別で、非常に難しいと感じてしまいました。
今回はturbo_method
について学ぶ機会があったのでアウトプットもかねて記事にまとめてみたいと思います
そもそもTurboとは
- Turboとは、RailsのHotwire1というセットアップの一部で、ページの遷移を高速化するための技術
- 主に、ページ全体をリロードすることなく、部分的にコンテンツを更新できるようにするためのもの
- これにより、ユーザー体験が向上し、アプリケーションがよりスムーズに動作する
- ユーザーがフォームを送信したときや、ボタンをクリックしてデータを更新したいときに使用される
turbo_methodについて
Turboを使用してHTTPリクエスト2を送信する際に、使いたいHTTPメソッドを指定するための機能で、Railsのビューで使うと、特定のアクションを実行するために便利
詳細
turbo_method
は、Railsのフォームやリンクに使われることが多く、通常のリンクやフォームでは、GET
やPOST
メソッドが使われるけど、turbo_method
を使うことで、DELETE
やPATCH
などの他のHTTPメソッドも簡単に使えるようになる
簡単な例
例えば、Railsでリソースを削除するためのリンクを作る場合、次のように書くことができる
<%= link_to 'Delete', resource_path(@resource), method: :delete, data: { turbo_method: :delete } %>
この例では、リソースを削除するためのリンクを作成していて、method: :delete
がturbo_method
に該当する部分。これにより、リンクをクリックすると、Turboが自動的にDELETE
リクエストを送信してくれる
Turboを使用しない場合のコード
Turboを使用しない場合、次のように書くことができるぞ。
<%= link_to 'Delete', resource_path(@resource), method: :post %>
このコードでは、method: :delete
を使わずにPOST
メソッドを指定している。この場合、リソースを削除するための正しいHTTPメソッドを使っていないため、サーバー側で適切な処理が行われない可能性がある!!
使用しない場合のデメリット
-
意図しない動作:
POST
リクエストが送信されても、サーバー側でDELETEリクエストとして処理されない場合、リソースが削除されないか、エラーになることがある。 -
セキュリティのリスク:
POST
リクエストは、通常、データを作成するために使われるため、削除操作が意図しない方法で行われる可能性がある。 - 可読性の低下: コードを見たときに、どの操作を意図しているのかが不明瞭になるため、他の開発者が理解しにくくなる。
まとめ
- turbo_methodは、HTTPリクエストのメソッドを指定するための機能。
- 詰め合わせというよりは、特定のメソッド(GET、POST、DELETEなど)を指定するためのオプション
-
Hotwire:Railsの開発者が提唱した新しいアプローチで、Webアプリケーションをよりインタラクティブにするための技術群だ。Hotwireには主に以下の3つのコンポーネントが含まれている①Turbo: ページ遷移を高速化するための技術。②Stimulus: JavaScriptを使って、HTMLの動的な振る舞いを簡単に追加するためのフレームワーク。③Strada: モバイルアプリケーションとWebアプリケーションをつなぐための技術。 ↩
-
HTTPリクエスト:クライアント(通常はブラウザ)がサーバーに対して送信する要求のこと。これにより、サーバーはデータを取得したり、更新したり、削除したりする操作を行うことができる。リクエストには、さまざまなメソッド(GET、POST、PUT、DELETEなど)がある ↩