change exercise helper

dev_home
SylorHuang 5 years ago
parent 1f33b2531e
commit 41448cee0a

@ -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

Loading…
Cancel
Save