🐣
【Ruby on Rails】レビュー機能 ブラウザバックしたら星が増えるバグ解決方法
プログラミング学習後の記録として記述しております。
何か間違いがありましたら、ご指摘お願い致します。
開発環境
Windows10
Cloud9
Ruby2.6.3
Rails6.1.4
raty.jsを使用してレビュー機能実装済み
バグの現状
viewでの表示
投稿一覧→ 評価:★★★★★ 星5つ
ブラウザバックしたら→ 評価:★★★★★★★★★★ 星が増えてる
解決方法
scriptタグに$('').empty();を追加する
例.
<script>
$('#star').empty(); ←これ追加
$('#star').raty({ size : 20,
starOff: '<%= asset_path('star-off.png') %>',
starOn : '<%= asset_path('star-on.png') %>',
scoreName: 'post[difficulty]',
half: false, });
</script>
$('#star').empty();が無いと、以下の事が起こります。
星が5つ表示される
↓
他のページに遷移する
↓
ブラウザバックする
↓
星5つが読み込まれた後に再度星が5つが読み込まれます。(合計10 星が増える)
ページに遷移して再度ブラウザバックしたら、星が5つ読み込まれ、
星がどんどん増えていきます。
なので、emptyメソッドを使って、一旦子要素を削除する
そうすることで上記のバグが解決します。
emptyとは?
指定した要素の子要素を削除
指定した要素自体は削除されない
※星部分を一度削除して再度読み込む
(子要素が削除されるだけで、要素自体は削除されていないです)
お疲れ様でした。
Discussion