Railsでの非同期更新処理CRUD DOM操作
今日は、現在作成しているインスタクローンなアプリのコメント機能を実装していました。
コメント機能は、Ajaxを使って非同期更新で実装しています。 それぞれのDOM操作についてまとめます。 ※エラーハンドリングは省略しています
create.js.slim
| $('.comments-box').prepend( $("#{escape_javascript(render 'comments/comment', comment: @comment)}") .hide().fadeIn('slow') ); | $('.input-comment-body').val('');
comments-box
の先頭にcomments/_comments.html.slim
を入力したコメントの内容で追加- 追加するときのアニメーションは
fadeIn()
メソッドを使用します。 - 2行目は、formの内容をクリアしています。
destroy.js.slim
| $('#comment-#{@comment.id}').fadeOut('fast', function(){ $(this).remove(); });
- id が
#comment-#{@comment.id}
の要素を削除します - 単純に
remove().fadeOut()
のようにしてもfadeOutが効かなかったため、調べたところ、fadeOutの引数として、removeのメソッドを利用すると効くことがわかりました。
update.js.slim
| $("#comment-#{@comment.id}").html( $("#{escape_javascript(render 'comments/comment', comment: @comment)}") .hide().fadeIn('slow') ); | $("#comment-edit-modal").modal('hide');
- updateは
html
メソッドを使って、 コメントの中身を入れ替えます。ちょっと余計かなと思いましたが、どこが変わったかわかりやすいのでアニメーションをつけました。 .modal('hide')
で更新後、編集のmodalを消しています。