Rails Guideの説明を読んでもいまいちよくわからなかったので頭の整理をするために書いておく。
- form_with, link_to, buttonなどでAjaxリクエストを送信
- コントローラーの respond_toの中にformat.jsを書くと対応するxxxx.js.erbでJavascriptコードを作成する。
users_controller.rb
def index
@users = User.all
respond_to do |format|
format.js
end
end
- 返されたJavascriptによって元画面の書き換えが行われる。
index.js.erb
# 実際はappendToではなくreplaceWithを使って書き換えるケースが多いと思う。
$("<%= escape_javascript(render @users) %>").appendTo("#users");
ちなみに renders @users
は 対応する部分テンプレート(_user.html.erb)に受けとったデータを描画する。