diff --git a/app/helpers/exercises_helper.rb b/app/helpers/exercises_helper.rb index 6c45795ef..ca1e01d40 100644 --- a/app/helpers/exercises_helper.rb +++ b/app/helpers/exercises_helper.rb @@ -164,7 +164,8 @@ module ExercisesHelper question_answer_infos.push(answer_option) end elsif ex.question_type == Exercise::COMPLETION #填空题 - effictive_users_count = effictive_users.where("answer_text is not null and answer_text !=''").pluck(:user_id).uniq.size + effictive_users_ids = effictive_users.where("answer_text is not null and answer_text !=''").pluck(:user_id).uniq + effictive_users_count = effictive_users_ids.size ex_ordered = ex.is_ordered null_standard_answer = ex.exercise_standard_answers null_stand_choice = null_standard_answer.pluck(:exercise_choice_id) #一个exercise_choice_id可能对应多个answer_text @@ -174,15 +175,16 @@ module ExercisesHelper all_user_count = 0 if ex_ordered - null_stand_choice.each_with_index do |s,index| - s_choice_text = null_stand_text[index] + all_null_stand_choice = null_standard_answer.pluck(:exercise_choice_id,:answer_text) + all_null_stand_choice.each_with_index do |s,index| + # s_choice_text = null_stand_text[index] user_count = 0 - user_count = user_count + effictive_users.where("exercise_choice_id = ? and answer_text = ?",s,s_choice_text).pluck(:user_id).uniq.size + user_count = user_count + effictive_users.where("exercise_choice_id = ? and answer_text = ?",s[0],s[1]).pluck(:user_id).uniq.size # user_count = user_count + effictive_users.select{|answer| answer.exercise_choice_id == s && answer.answer_text == s_choice_text}.size answer_percent = ((effictive_users_count == 0) ? 0.0 : (user_count / effictive_users_count.to_f ).round(3)) answer_option = { :choice_position => index+1, - :choice_text => s_choice_text, + :choice_text => s[1], :choice_users_count => user_count, :choice_percent => answer_percent.round(2).to_s, :right_answer => true @@ -215,7 +217,8 @@ module ExercisesHelper # percent = commit_user_ids > 0 ? (all_user_count / commit_user_ids.to_f).round(3)*100 : 0.0 # user_right_count = effictive_users.where("score > 0.0").pluck(:user_id).uniq # unanswer_user_count = effictive_users.where("score < 0.0 and answer_text is null or answer_text = ''").pluck(:user_id).uniq - user_wrong_count = effictive_users.where("score < 0.0 and (answer_text is not null or answer_text != '')").pluck(:user_id).uniq.size + user_wrong_ids = effictive_users.where("score < 0.0").pluck(:user_id) + user_wrong_count = (user_wrong_ids && effictive_users_ids).uniq.size # user_wrong_count = (user_wrong_counts - user_right_count - unanswer_user_count).size if effictive_users_count > 0 && user_wrong_count >= 0