From eb791f8a74b26c327b9c10f427032d17a1d790b0 Mon Sep 17 00:00:00 2001 From: SylorHuang Date: Fri, 30 Aug 2019 09:11:27 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E8=AF=95=E5=8D=B7=E7=9A=84=E5=A1=AB?= =?UTF-8?q?=E7=A9=BA=E9=A2=98=E4=BF=AE=E6=94=B9=E7=AD=94=E6=A1=88?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/exercise_questions_controller.rb | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/controllers/exercise_questions_controller.rb b/app/controllers/exercise_questions_controller.rb index dccdae809..8c3a04f61 100644 --- a/app/controllers/exercise_questions_controller.rb +++ b/app/controllers/exercise_questions_controller.rb @@ -255,8 +255,8 @@ class ExerciseQuestionsController < ApplicationController end elsif @exercise_question.question_type == Exercise::COMPLETION #填空题 old_ex_answer = @exercise_question.exercise_standard_answers #当前问题的全部标准答案 - old_ex_answer_choice_texts = old_ex_answer.pluck(:answer_text).uniq.sort - new_ex_answer_choice_texts = standard_answer.pluck(:answer_text).sum.uniq.sort + old_ex_answer_choice_texts = old_ex_answer.pluck(:answer_text).sort + new_ex_answer_choice_texts = standard_answer.pluck(:answer_text).sum.sort if old_ex_answer_choice_texts != new_ex_answer_choice_texts #填空题标准答案有更改时,才会更新标准答案 new_ex_answer_choice_ids = standard_answer.map {|a| a[:choice_id]}.uniq #新传入的答案数组序号 old_ex_answer_choice_ids = old_ex_answer.pluck(:exercise_choice_id).uniq #全部的答案数组序号 From 7309b02b65d047a7c1614b29d698365a6d596ac9 Mon Sep 17 00:00:00 2001 From: cxt <853663049@qq.com> Date: Fri, 30 Aug 2019 09:15:23 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E9=97=AE=E5=8D=B7=E9=A2=98=E5=BA=93?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E9=A1=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- app/controllers/exercise_banks_controller.rb | 78 +++++++++++-------- app/controllers/question_banks_controller.rb | 2 +- .../_poll_questions.json.jbuilder | 18 +++++ app/views/exercise_banks/show.json.jbuilder | 44 ++++++++--- 4 files changed, 98 insertions(+), 44 deletions(-) create mode 100644 app/views/exercise_banks/_poll_questions.json.jbuilder diff --git a/app/controllers/exercise_banks_controller.rb b/app/controllers/exercise_banks_controller.rb index cc7a1003e..9aa589768 100644 --- a/app/controllers/exercise_banks_controller.rb +++ b/app/controllers/exercise_banks_controller.rb @@ -8,38 +8,12 @@ class ExerciseBanksController < ApplicationController def show @exercise_questions = @bank.exercise_bank_questions&.includes(:exercise_bank_choices, :exercise_bank_shixun_challenges, :exercise_bank_standard_answers).order("question_number ASC") - @exercise_ques_count = @exercise_questions.size # 全部的题目数 - @exercise_ques_scores = @exercise_questions.pluck(:question_score).sum - - #单选题的数量及分数 - exercise_single_ques = @exercise_questions.find_by_custom("question_type", Exercise::SINGLE) - @exercise_single_ques_count = exercise_single_ques.size - @exercise_single_ques_scores = exercise_single_ques.pluck(:question_score).sum - - #多选题的数量及分数 - exercise_double_ques = @exercise_questions.find_by_custom("question_type", Exercise::MULTIPLE) - @exercise_double_ques_count = exercise_double_ques.size - @exercise_double_ques_scores = exercise_double_ques.pluck(:question_score).sum - # 判断题数量及分数 - exercise_ques_judge = @exercise_questions.find_by_custom("question_type", Exercise::JUDGMENT) - @exercise_ques_judge_count = exercise_ques_judge.size - @exercise_ques_judge_scores = exercise_ques_judge.pluck(:question_score).sum - - #填空题数量及分数 - exercise_ques_null = @exercise_questions.find_by_custom("question_type", Exercise::COMPLETION) - @exercise_ques_null_count = exercise_ques_null.size - @exercise_ques_null_scores = exercise_ques_null.pluck(:question_score).sum - - #简答题数量及分数 - exercise_ques_main = @exercise_questions.find_by_custom("question_type", Exercise::SUBJECTIVE) - @exercise_ques_main_count = exercise_ques_main.size - @exercise_ques_main_scores = exercise_ques_main.pluck(:question_score).sum - - #实训题数量及分数 - exercise_ques_shixun = @exercise_questions.find_by_custom("question_type", Exercise::PRACTICAL) - @exercise_ques_shixun_count = exercise_ques_shixun.size - @exercise_ques_shixun_scores = exercise_ques_shixun.pluck(:question_score).sum + if @bank.container_type == "Exercise" + get_exercise_question_count + else + get_poll_question_count + end end def update @@ -103,4 +77,46 @@ class ExerciseBanksController < ApplicationController end end + def get_exercise_question_count + @exercise_ques_count = @exercise_questions.size # 全部的题目数 + @exercise_ques_scores = @exercise_questions.pluck(:question_score).sum + + #单选题的数量及分数 + exercise_single_ques = @exercise_questions.find_by_custom("question_type", Exercise::SINGLE) + @exercise_single_ques_count = exercise_single_ques.size + @exercise_single_ques_scores = exercise_single_ques.pluck(:question_score).sum + + #多选题的数量及分数 + exercise_double_ques = @exercise_questions.find_by_custom("question_type", Exercise::MULTIPLE) + @exercise_double_ques_count = exercise_double_ques.size + @exercise_double_ques_scores = exercise_double_ques.pluck(:question_score).sum + + # 判断题数量及分数 + exercise_ques_judge = @exercise_questions.find_by_custom("question_type", Exercise::JUDGMENT) + @exercise_ques_judge_count = exercise_ques_judge.size + @exercise_ques_judge_scores = exercise_ques_judge.pluck(:question_score).sum + + #填空题数量及分数 + exercise_ques_null = @exercise_questions.find_by_custom("question_type", Exercise::COMPLETION) + @exercise_ques_null_count = exercise_ques_null.size + @exercise_ques_null_scores = exercise_ques_null.pluck(:question_score).sum + + #简答题数量及分数 + exercise_ques_main = @exercise_questions.find_by_custom("question_type", Exercise::SUBJECTIVE) + @exercise_ques_main_count = exercise_ques_main.size + @exercise_ques_main_scores = exercise_ques_main.pluck(:question_score).sum + + #实训题数量及分数 + exercise_ques_shixun = @exercise_questions.find_by_custom("question_type", Exercise::PRACTICAL) + @exercise_ques_shixun_count = exercise_ques_shixun.size + @exercise_ques_shixun_scores = exercise_ques_shixun.pluck(:question_score).sum + end + + def get_poll_question_count + @poll_questions_count = @exercise_questions&.size # 全部的题目数 + @poll_question_singles = @exercise_questions.find_by_custom("question_type", 1).size # 单选题 + @poll_question_doubles = @exercise_questions.find_by_custom("question_type", 2).size # 多选题 + @poll_question_mains = @exercise_questions.find_by_custom("question_type", 3).size #主观题 + end + end diff --git a/app/controllers/question_banks_controller.rb b/app/controllers/question_banks_controller.rb index 00fea5f3e..f09a53dbe 100644 --- a/app/controllers/question_banks_controller.rb +++ b/app/controllers/question_banks_controller.rb @@ -1,7 +1,7 @@ class QuestionBanksController < ApplicationController before_action :require_login, :check_auth before_action :params_filter, except: [:my_courses] - before_action :teacher_or_admin, except: [:bank_list] + # before_action :teacher_or_admin, except: [:bank_list] # 题库选用列表 # object_type: # normal 普通作业题库; group 分组作业题库; poll问卷题库; exercise试卷题库; gtask 毕设选题题库;gtopic 毕设任务 diff --git a/app/views/exercise_banks/_poll_questions.json.jbuilder b/app/views/exercise_banks/_poll_questions.json.jbuilder new file mode 100644 index 000000000..524864e60 --- /dev/null +++ b/app/views/exercise_banks/_poll_questions.json.jbuilder @@ -0,0 +1,18 @@ +json.question do + json.id question.id + json.question_number question.question_number + json.question_title question.question_title + json.question_type question.question_type + json.is_necessary question.is_necessary + if question.question_type == 2 + json.max_choices question.max_choices + json.min_choices question.min_choices + end + json.answers do + json.array! answers do | a| + json.answer_id a.id + json.answer_position a.choice_position + json.answer_text a.choice_text.nil? ? "other_choices" : a.choice_text ## + end + end +end \ No newline at end of file diff --git a/app/views/exercise_banks/show.json.jbuilder b/app/views/exercise_banks/show.json.jbuilder index 1b2a931fa..049886b50 100644 --- a/app/views/exercise_banks/show.json.jbuilder +++ b/app/views/exercise_banks/show.json.jbuilder @@ -1,16 +1,36 @@ -json.exercise do - json.extract! @bank, :id, :name, :description, :is_public -end +if @bank.container_type == "Exercise" + json.exercise do + json.extract! @bank, :id, :name, :description, :is_public + end + + json.partial! "exercises/exercise_scores" + + json.exercise_questions do + json.array! @exercise_questions do |q| + json.partial! "exercise_bank_questions/exercise_bank_questions", + question: q, + choices:q.exercise_bank_choices, + shixun_challenges: q.exercise_bank_shixun_challenges, + ques_position:nil, + edit_type:nil + end + end -json.partial! "exercises/exercise_scores" +else + json.poll do + json.extract! @bank, :id, :name, :description, :is_public + end + + json.question_types do + json.q_counts @poll_questions_count + json.q_singles @poll_question_singles + json.q_doubles @poll_question_doubles + json.q_mains @poll_question_mains + end -json.exercise_questions do - json.array! @exercise_questions do |q| - json.partial! "exercise_bank_questions/exercise_bank_questions", - question: q, - choices:q.exercise_bank_choices, - shixun_challenges: q.exercise_bank_shixun_challenges, - ques_position:nil, - edit_type:nil + json.questions do + json.array! @exercise_questions do | question| + json.partial! "exercise_banks/poll_questions", question: question, answers: question.exercise_bank_choices + end end end \ No newline at end of file