質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

解決済

2回答

2480閲覧

ブラウザバックした回数だけ要素が増えてしまう

mashoo

総合スコア8

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2020/03/11 15:09

取り組んでいること

Railsを使って簡単なWebアプリケーションを作成しています。
投稿に対して評価するレビュー機能を作成していて、星を使って五段階評価できるようにしたいと思い,
jQuery Ratyを使って実装することにしました。
参考にした記事

起きている問題

星を使ったレビューを作成し、表示することができました。
レビューの画像

この状態で、ブラウザの戻るボタンをクリックし、さらに進むボタンをクリックします。(元のページに戻った状態にする。)
すると星の表示が、画像のように増えてしまいます。
レビューの画像(星の不具合あり)
この状態でもう一度戻るボタン、進むボタンを押すとさらに5つ星が追加されて表示されてしまいます。
一連の動作を行った回数だけ、星の数も増えてしまう不具合が発生しています。

ソースコード

ruby

1# index.html.erb 2<div class="review"> 3 <h4 class="mb-3"><%= @event.title %>のレビュー</h4> 4 <div class="mb-3"> 55つ中<%= @reviews.all.average(:rate) %> 6 <%= render @reviews %> 7 <p><%= link_to 'レビューを書く', new_event_review_path %></p> 8 9 <%= page_entries_info @reviews %> 10 <%= paginate @reviews %> 11 </div> 12</div> 13

ruby#

1# _review.html.erb 2<div class="mb-4"> 3 <div class="mb-3"> 4 <%= image_tag review.user.image, class: "user-img-review"%> 5 <span class="pl-1"><%= link_to review.user.name, user_path(review.user)%></span> 6</div> 7 <div class="mb-3"> 8 <span class="mr-2" id="star-rate-<%= review.id %>"></span> 9 <span class="review-title"><%= review.title %></span> 10 </div> 11 <%= review.text %> 12 <div class="mt-3"> 13 <% if current_user==review.user %> 14 <%= link_to 'レビューを削除', event_review_path(@event, review), method: :delete, data: { confirm: "本当に削除しますか?" } %> 15 <% end %> 16 </div> 17</div> 18 19<script> 20 $('#star-rate-<%= review.id %>').raty({ 21 size: 36, 22 starOff: '<%= asset_path('star-off.png') %>', 23 starOn : '<%= asset_path('star-on.png') %>', 24 starHalf: '<%= asset_path('star-half.png') %>', 25 half: true, 26 readOnly: true, 27 score: <%= review.rate %> 28 }); 29</script>

知りたいこと

デベロッパーツールやコードを何度も見てみましたが、原因がわからないので投稿させていただきました。
jQuery、JavaScriptに詳しい方がいましたら、ここが怪しい等のアドバイスをいただけると助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

maisumakun

2020/03/11 22:11

Turbolinksは入れていますか?
mashoo

2020/03/12 00:05

ご指摘の通りでした。 reviewのjsを$(document).on('turbolinks:load', function(){})の中に入れたところ、正しく表示されるようになりました。 ありがとうございます!
guest

回答2

0

星を5つまでに限定するなら  number: 5 を追加すれば収まるでしょう。

ただ他にも問題がありそう。
「戻る」さきからこの画面へ来るのは、レビューを投稿する という操作ではないでしょうか?
それが何度も実行されていると思われます。

投稿2020/03/11 22:18

winterboum

総合スコア23567

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

mashoo

2020/03/12 00:02

ご回答ありがとうございます。 アプリケーション全体でtubolinksを有効にしていたのですが、レビューのjsだけtubolinksの記述をしていないために、星がうまく表示されていませんでした。
guest

0

自己解決

tubolinksの記述を忘れていました。
reviewのjsを$(document).on('turbolinks:load', function(){})の中に入れたところ、正しく表示されるようになりました。

投稿2020/03/12 01:50

mashoo

総合スコア8

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問