Ruby on RailsとJavaScriptで4択クイズアプリを作っています。
問題画面で選択肢ボタンをクリックするとhelperのメソッドによりデータベースが更新され、画面遷移なしで正解/不正解が表示されます。ここでグラフ表示ボタンを押すと、画面が遷移してグラフ表示画面に飛ぶようにしました。
しかし、グラフ表示ボタンを押したときにもこのhelperメソッドupdateData(bool)が呼び出されているようで、勝手にデータベースが更新され、解答済みの問題数が1だけ余分に増えてしまいます。console.logの結果を見たところ、グラフ表示ボタンでsendAnswer(ans)が呼び出されているわけではないようです。
原因やデバッグのヒントなど、アドバイスを頂けると幸いです。
Railsはversion 5.0.1を使っています。
よろしくお願いいたします。
html
1<head> 2 <script> 3 function sendAnswer(ans){ 4 var questionID = getNumber(); 5 var data = readCSV(questionID); 6 //選択肢番号と正解番号data[5]と等しければ正解 7 if(data[5] == ans ){ 8 console.log("true") 9 <% updateData(1) %> 10 }else{ 11 console.log("false") 12 <% updateData(0) %> 13 }; 14 //解答後にグラフ表示ボタンを表示 15 $("#bottom").append('<div id="showChart"></div>'); 16 $("#showChart").html('<button id="showChartBtn" onclick="showChart()">グラフ表示</button>'); 17 }; 18 </script> 19 20 <script> 21 function showChart(){ 22 window.location.href = "/chart"; 23 }; 24 </script> 25</head> 26 27<body> 28 <% alphabets = ["A", "B", "C", "D"] %> 29 <!-- forループでA-Dの選択肢を表示 --> 30 <% for i in 0..3 %> 31 <button class="choice_btn" id="btn_<%= i %>" onclick="sendAnswer(<%= i %>);"> 32 <%= alphabets[i] %> 33 </button> 34 <% end %> 35 <div id="bottom"> 36 <!-- ここにグラフ表示ボタンが入る --> 37 </div> 38</body>
ruby
1# 記憶トークンcookieに対応するユーザーを返す 2 def current_user 3 if (user_id = session[:user_id]) 4 @current_user ||= User.find_by(id: user_id) 5 elsif (user_id = cookies.signed[:user_id]) 6 user = User.find_by(id: user_id) 7 if user && user.authenticated?(:remember, cookies[:remember_token]) 8 log_in user 9 @current_user = user 10 end 11 end 12 end 13 14#データベース更新。問題数を1増やし、正解ならば正解数を1増やす 15def updateData(bool) 16 current_user.questionNum += 1 17 current_user.correctNum += bool 18 current_user.save 19end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/03/22 17:36