diff --git a/app/controllers/exercise_questions_controller.rb b/app/controllers/exercise_questions_controller.rb index 27e3fa2f4..dc80bccf0 100644 --- a/app/controllers/exercise_questions_controller.rb +++ b/app/controllers/exercise_questions_controller.rb @@ -515,7 +515,15 @@ class ExerciseQuestionsController < ApplicationController else # 新多选题只需取第一条答题记录的得分 ex_answer_old = ex_answers.first.score > 0 ? ex_answers.first.score : 0 end + ex_answers.update_all(:score => @c_score) #所有的正确选项需重新更新 else + answer_option = { + :user_id => @user_id, + :exercise_question_id => @exercise_question.id, + :score => @c_score, + :answer_text => "" + } + ExerciseAnswer.create(answer_option) ex_answer_old = 0 end @@ -526,12 +534,24 @@ class ExerciseQuestionsController < ApplicationController :score => total_scores } @exercise_current_user.update_attributes(ex_scores) - ex_answers.update_all(:score => @c_score) #所有的正确选项需重新更新 elsif @exercise_question.question_type == Exercise::COMPLETION #当为填空题,更新问题的总分, - ex_answer_old = ex_answers.score_reviewed.pluck(:score).sum #每一关的得分总和 - each_right_score = (@c_score / ex_answers.count.to_f) #调分后,平均每关的分数 - new_obj_score = ex_obj_score - ex_answer_old + @c_score + + if ex_answers.exists? + ex_answer_old = ex_answers.score_reviewed.pluck(:score).sum #每一关的得分总和 + each_right_score = (@c_score / ex_answers.count.to_f) #调分后,平均每关的分数 + new_obj_score = ex_obj_score - ex_answer_old + @c_score + else #如果学生未答,则创建新的答题记录 + answer_option = { + :user_id => @user_id, + :exercise_question_id => @exercise_question.id, + :score => @c_score, + :answer_text => "" + } + ExerciseAnswer.create(answer_option) + new_obj_score = ex_subj_score + @c_score + end + total_scores = new_obj_score + ex_subj_score ex_scores = { :objective_score => new_obj_score,