積々RUNMIZZO

日々積み重ね

【Ruby on Rails】コメント投稿だけAjax化(超ざっくり)

学習メモです✍

  1. コメントの投稿フォームのform_withのlocal: trueを削除(※デフォルトでremote: trueだから)
  2. redirect_backの処理を削除(更にcreateメソッドで簡潔化)
  3. jsファイル作成
$("#js-table-comment").prepend("<%= j(render('comments/comment', comment: @comment)) %>");

prependは投稿内容を1番前に表示させる
htmlとかreplaceWithやったらゴソッと他の投稿消えるから一瞬焦る※更新したら元通り)
→この辺の記述の仕組みは後で復習

$("textarea").val('');

→コメント作成後、フォームを空にする


おまけ


$(セレクタ).メソッド(引数)はjQueryの省略構文 Image from Gyazo
これだけでかなり理解◎

jsファイルの記述もうちょい深入り


今回使われてるjQuery記述

表記 意味
$(“p”) p要素全てを指定
$(“#hoge”) id=”hoge”の要素を指定


j はActionView::Helpers::JavaScriptHelper#escape_javascriptエイリアスメソッド。
改行コード、シングルクオート、ダブルクオートをJavaScript用にエスケープしてくれるヘルパメソッド(のエイリアス)でerb が Ruby コードとして解釈した文字列をJavaScriptで正しく扱えるようにエスケープしてくれる。
→要はRubyコードをJSコード的にしてくれる奴(ざっくり)
今回の場合render('comments/comment', comment: @comment)でパーシャルしてるファイルをJS的に呼び出してくれたってことかな。

参照


jQueryの使い方「基本の書き方と考え方」
RailsでAjax基本形(Scaffoldで学ぶ) - Qiita