前提・実現したいこと
環境
Rails 6.0.3.4
######railsを使って食べログのようなシェアハウスを探すサイトを作っています。
主なモデルの説明
House ・・・物件情報 (houses/index.html.erb は ransackでの検索結果一覧を表示しているページです。)
Comment・・・ 口コミ (口コミカラムはHouseとUserの中間カラム)
User ・・・ユーザー
######raty.jsを使って5段階表示の星型レビューを実装しました。
その際、以下記事を参考にしました。
【Rails】レビュー用の星★の評価を実装する(入力、保存、表示)
その後、口コミが投稿されていない物件がある時にエラーが出たので、if文で口コミが存在しない時は白い星を5個表示するようにコードを書きました。
<% if house.comments.present? %> <span id="star-rate-<%= house.id %>"></span> <%= house.comments.average(:star).round(1)%> <p>最新の口コミ<%= house.comments.count%>件</p> <script> $(document).on('turbolinks:load', function(){ $("#star-rate-<%= house.id %>").raty({ size : 36, starOff : '<%= asset_path('star-off.png') %>', starHalf : '<%= asset_path('star-half.png') %>', starOn : '<%= asset_path('star-on.png') %>', half : true, readOnly: true, score: <%= house.comments.present? ? house.comments.average(:star).round(1) :0 %>, }); }) </script> <% else %> <img src="/assets/star-off.png"> <img src="/assets/star-off.png"> <img src="/assets/star-off.png"> <img src="/assets/star-off.png"> <img src="/assets/star-off.png"> <%= 0.0%> <p>最新の口コミ<%= house.comments.count%>件</p> <% end %>
しかし
ブラウザで戻るボタンを押すと、再度raty.js が呼び出されてしまい、houses/index.html.erbに表示されている物件数×5個の白い星が表示されてしまいます。戻るボタンを押さなければ綺麗に星を表示することができます。
![]
戻るボタンを押した際に綺麗に5個だけ星が表示されるようにしたいです。
発生している問題・エラーメッセージ
サーバー上、ブラウザ共にエラー文は出ていません。
該当のソースコード
houses/index.html.erb
ruby
1<div class="house_list"> 2<% @houses.each do |house|%> 3 <%= link_to house, class:"card border-light mb-3 card-columns card-dec Editlink", style:"max-width: 80%; border-width:5px 0 0 0;" do %> 4 <div class="card-header"><%= house.name %> / <%= house.area.name%></div> 5 <div class="card-body"> 6 <div class="row"> 7 <%= image_tag house.house_image.url,class:"col-3" %> 8 <div class="col-9 "> 9 <p class="card-text">賃料 <%= house.house_rent %>円</p> 10 <p class="card-text">アクセス <%= house.station %>駅 / 徒歩<%= house.access %>分</p> 11 <% if house.comments.present? %> 12 <span id="star-rate-<%= house.id %>"></span> 13 <%= house.comments.average(:star).round(1)%> 14 <p>最新の口コミ<%= house.comments.count%>件</p> 15 <script> 16 $(document).on('turbolinks:load', function(){ 17 $("#star-rate-<%= house.id %>").raty({ 18 size : 36, 19 starOff : '<%= asset_path('star-off.png') %>', 20 starHalf : '<%= asset_path('star-half.png') %>', 21 starOn : '<%= asset_path('star-on.png') %>', 22 half : true, 23 readOnly: true, 24 score: <%= house.comments.present? ? house.comments.average(:star).round(1) :0 %>, 25 }); 26 }) 27 </script> 28 <% else %> 29 <img src="/assets/star-off.png"> 30 <img src="/assets/star-off.png"> 31 <img src="/assets/star-off.png"> 32 <img src="/assets/star-off.png"> 33 <img src="/assets/star-off.png"> 34 <%= 0.0%> 35 <p>最新の口コミ<%= house.comments.count%>件</p> 36 <% end %> 37 <p id="housecount-<%= house.id %>" > 38 <i class="fas fa-bookmark"></i> 39 <%= render 'clips_count',house: house %>件 40 </p> 41 </div> 42 </div> 43 </div> 44 <% end %> 45 <% end %> 46</div>
houses_controller
def index @q = House.ransack(params[:q]) @houses= @q.result(distinct: true) @areas=Area.all @comments=Comment.where(house_id: @house) end
試したこと
####1 tubolinksの導入
https://teratail.com/questionsn/246572
上記記事を参考に、tubolinksの記述をしましたが上手く行きませんでした。
####2 星を入れる前に中身を空にする操作を導入
```
### 補足情報(FW/ツールのバージョンなど) githubのリンクも載せておきます。(masterブランチを参照してください) [github](https://github.com/nakamitsu-nozomi/share_house_app/blob/master/app/views/houses/index.html.erb) 5日ほど考えておりますが解決できず、本当に困っております。ご回答頂けると幸いです。よろしくお願い致します。

バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/11/12 23:18 編集
2020/11/13 00:35