Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

Ruby

【Ruby on Rails】簡単なメモアプリの作成|非同期通信(Ajax)の実装

Ruby on Rails 非同期通信

動画で解説を見る



開発環境

  • Ruby:version 3.1.2
  • Ruby on Rails:version 7.0.4
  • Visual Studio Code:version 1.73.0
  • OS:Windows10

Ruby on Railsで非同期通信(Ajax)の実装手順

Ruby on Railsの非同期通信は、WebAPI、コメント、いいね機能、チャット機能、コメント機能、dm機能などでも当たり前に行われています。

今回はメモアプリの作成で使用した「新規投稿」と「エラーメッセージ」のコードを用いて解説していきます。

非同期通信を実装する前のインデックスビュー

今回、非同期通信を実装する前のインデックスビューが下記になります。

非同期通信の実装に必要なJSライブラリを設定する

今回、Rails7で非同期通信の実装に必要なJSライブラリを設定します。

「jquery」と「rails-ujs」をそれぞれCDNで読み込む設定をします。

非同期通信のルーティングを作成する

続いて、非同期通信のルーティングを作成します。

HTTPSメソッドがPOSTで「ajax_memos_create」のURLがリクエストされた場合に、memosコントローラー内のajax_createアクションを呼び出します。

また、「as: 'ajax_memos_create'」とすることにより、名前付きルートを固定する形になります。

コントローラーに非同期通信で処理する内容を記述する

続いて、コントローラーに非同期通信で処理する内容を記述します。

Ruby on RailsではJS形式でリクエストされた場合、処理が終わった後は「アクション名.js.erb」ファイルを探してくれます。

もちろん、renderメソッドでファイルを指定することもできますが、今回は割愛しています。

非同期通信により処理が実行された後のJSファイルを記述する

続いて、非同期通信により処理が実行された後のJSファイルを「memo_app\app\views\memos」フォルダ内に作成して記述します。

js.erbのJSファイル内にRubyの記述でコードを書きこめる便利な拡張子です。

今回は1行目で一覧表示を再度読み込む、2行目でエラーメッセージを再度読み込む、3行目で新規投稿フォーム内の値を空にするという内容になっています。

ただ、エスケープ処理をしてかなければならないため、Rubyのescape_javascriptメソッドを利用して「j()」や「escape_javascript()」としておく必要があります。

非同期通信するためにセレクタのIDをインデックスビューに設定する

続いて、非同期通信するためにセレクタのIDをインデックスビューに設定します。

それぞれ新規投稿フォーム、エラーメッセージ、一覧表示にIDを付与しておき、JSファイルで処理する場所を指定しておきます。

新規投稿フォームを非同期通信にする

最後に新規投稿フォームを非同期通信にします。

form_withの場合は「local: false」のオプションを追加することにより、フォームのプロパティに「data-remote="true"」を追加することができます。

また、非同期通信用のルーティングを作成しておりますので、「ajax_memos_create_path」に変更しておきます。

以上でURLが変わらずにデータの処理が非同期通信で行えていれば実装完了です。

おわりに

Ruby on Railsで非同期通信について解説してきましたが、いかがだったでしょうか。

今回は新規投稿とエラーメッセージ、一覧表示に対して非同期通信の実装をしましたが、編集機能や更新機能、削除機能はもちろん、フラッシュメッセージにも実装することが可能です。

是非、ユーザーがアプリケーションを使いやすいようにするためにも、非同期通信の実装にチャレンジにしてみてください。

Check


プログラミングが無料で学べるYouTubeチャンネルを配信中!

RubyやPython、PHPやReactなど様々なプログラミング言語のチュートリアル動画が充実!

チャンネル登録はこちら

-Ruby