🐣

【Ruby on Rails】レビュー機能 ブラウザバックしたら星が増えるバグ解決方法

2022/04/26に公開

プログラミング学習後の記録として記述しております。
何か間違いがありましたら、ご指摘お願い致します。

開発環境

Windows10
Cloud9
Ruby2.6.3
Rails6.1.4
raty.jsを使用してレビュー機能実装済み

バグの現状

viewでの表示
投稿一覧→ 評価:★★★★★ 星5つ
ブラウザバックしたら→ 評価:★★★★★★★★★★ 星が増えてる

解決方法

scriptタグに$('').empty();を追加する
例.

<script>
 $('#star').empty(); ←これ追加
 $('#star').raty({ &nbsp;&nbsp;&nbsp;size : 20,
  starOff: '<%= asset_path('star-off.png') %>',
  starOn : '<%= asset_path('star-on.png') %>',
  scoreName: 'post[difficulty]',
  half: false, &nbsp;&nbsp;});
</script> 

$('#star').empty();が無いと、以下の事が起こります。
星が5つ表示される

他のページに遷移する

ブラウザバックする

星5つが読み込まれた後に再度星が5つが読み込まれます。(合計10 星が増える)
ページに遷移して再度ブラウザバックしたら、星が5つ読み込まれ、
星がどんどん増えていきます。
なので、emptyメソッドを使って、一旦子要素を削除する
そうすることで上記のバグが解決します。

emptyとは?
指定した要素の子要素を削除
指定した要素自体は削除されない
※星部分を一度削除して再度読み込む
(子要素が削除されるだけで、要素自体は削除されていないです)

お疲れ様でした。

Discussion