【Ruby on Rails】コメント投稿だけAjax化(超ざっくり)
学習メモです✍
- コメントの投稿フォームのform_withのlocal: trueを削除(※デフォルトでremote: trueだから)
- redirect_backの処理を削除(更にcreateメソッドで簡潔化)
- jsファイル作成
$("#js-table-comment").prepend("<%= j(render('comments/comment', comment: @comment)) %>");
→prepend
は投稿内容を1番前に表示させる
(html
とかreplaceWith
やったらゴソッと他の投稿消えるから一瞬焦る※更新したら元通り)
→この辺の記述の仕組みは後で復習
$("textarea").val('');
→コメント作成後、フォームを空にする
おまけ
$(セレクタ).メソッド(引数)はjQueryの省略構文
これだけでかなり理解◎
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的に呼び出してくれたってことかな。