diff --git a/app/controllers/hacks_controller.rb b/app/controllers/hacks_controller.rb index 915e58882..5c29d7c97 100644 --- a/app/controllers/hacks_controller.rb +++ b/app/controllers/hacks_controller.rb @@ -1,8 +1,8 @@ class HacksController < ApplicationController before_action :require_login, except: [:index] - before_action :require_teacher_identity, only: [:create, :edit, :update] - before_action :require_auth_identity, only: [:update, :edit, :publish] - before_action :find_hack, only: [:edit, :update, :publish, :start] + before_action :require_teacher_identity, only: [:create, :update_set] + before_action :require_auth_identity, only: [:update, :edit, :publish, :update_set, :delete_set] + before_action :find_hack, only: [:edit, :update, :publish, :start, :update_set, :delete_set] # 开启编程,如果第一次开启,创建一条记录,如果已经开启过的话,直接返回标识即可 def start @@ -75,6 +75,20 @@ class HacksController < ApplicationController end end + # 更新测试集接口 + def update_set + set = @hack.hack_sets.find_by(id: params[:id]) + set.update_attributes!(hack_set_params) + render_ok + end + + # 单独删除测试集 + def delete_set + set = @hack.hack_sets.find_by(id: params[:id]) + set.destroy! + render_ok + end + # 发布功能 def publish @hack.update_attribute(:status, 1) @@ -119,6 +133,10 @@ class HacksController < ApplicationController params.permit(hack_sets: [:input, :output, :position])[:hack_sets] end + def hack_set_params + params.require(:hack_set).permit(:id, :input, :output, :position) + end + def hack_code_params params.require(:hack_codes).permit(:code, :language) end diff --git a/app/models/hack_set.rb b/app/models/hack_set.rb index d0518a5b4..669fa10b1 100644 --- a/app/models/hack_set.rb +++ b/app/models/hack_set.rb @@ -1,4 +1,6 @@ class HackSet < ApplicationRecord + validates :input, presence: { message: "测试集输入不能为空" } + validates :output, uniqueness: { message: "测试集输出不能为空" } # 编程题测试集 belongs_to :hack end diff --git a/config/routes.rb b/config/routes.rb index 3d6d31b87..86bac4533 100644 --- a/config/routes.rb +++ b/config/routes.rb @@ -43,6 +43,8 @@ Rails.application.routes.draw do post :publish get :start get :result + post :update_set + delete :delete_set end resources :comments do post :reply diff --git a/public/react/src/modules/courses/coursesPublic/NewShixunModel.js b/public/react/src/modules/courses/coursesPublic/NewShixunModel.js index 5fe9c8aa0..99a8ad232 100644 --- a/public/react/src/modules/courses/coursesPublic/NewShixunModel.js +++ b/public/react/src/modules/courses/coursesPublic/NewShixunModel.js @@ -616,7 +616,7 @@ class NewShixunModel extends Component{ } - {shixun_list===undefined||shixuns_count===undefined?"":shixun_list.length===0||shixuns_count===0?"":shixuns_count>15?