積々RUNMIZZO

日々積み重ね

【Ruby on Rails】Ajax化について学習メモ✍

学習メモ📝

Ajax

  • Asynchronous JavaScript + XML の略
  • 非同期通信と呼ばれる通信方法
    • 逆に同期通信は画面の切り替わりが起きる(画面が一瞬白くなる)
  • 地図アプリで画面が切り替わらずに操作できるイメージ

RailsではUJS: Unobtrusive(控えめな)JavaScriptという、HTMLの中にJavaScriptを混入させないという意図に由来して、組み込みヘルパーが用意されている。

form_with ・・・フォームの作成を支援
link_to ・・・リンクの生成を支援
button_to ・・・ボタンの作成を支援
(※form_withはデフォルトでAjaxが利用できる)

実装方法

①remote:true形式←コチラ採用
ajax関数を使った形式

  1. リダイレクト処理していたアクションを変更
    • redirect_back等の記述がせれていたら削除
  2. Ajaxでサーバーにリクエストを送る処理を追加
    • ヘルパーにremote: trueを指定
    • レンダリングが、htmlではなくjsファイルで実行される
  3. 実行したい内容を記載した jsファイル(js.erb)を作成
    • htmlメソッド(もしくはreplaceWithメソッド)を用い、指定したセレクタのhtml部分(指定したid属性を持つ部分)を置き換える

(例)

$("#js-bookmark-button-for-board-<%= @board.id %>").replaceWith("<%= j(render('boards/unbookmark', board: @board)) %>");

参照

Ajaxでブックマークボタンを実装する - Ruby on Rails Learning Diary