diff --git a/app/controllers/exercises_controller.rb b/app/controllers/exercises_controller.rb index 25f522f3..07bd033d 100644 --- a/app/controllers/exercises_controller.rb +++ b/app/controllers/exercises_controller.rb @@ -70,8 +70,9 @@ class ExercisesController < ApplicationController begin user = user_for_oauth2_request() exercise = Exercise.new - exercise.from_proforma_xml(request.body.read) - exercise.update(:user => user) + request_body = request.body.read + exercise.from_proforma_xml(request_body) + exercise.user = user saved = exercise.save if saved render :text => 'SUCCESS', :status => 200 diff --git a/app/models/exercise.rb b/app/models/exercise.rb index 9eabb874..1b917ecb 100644 --- a/app/models/exercise.rb +++ b/app/models/exercise.rb @@ -109,8 +109,11 @@ class Exercise < ActiveRecord::Base def from_proforma_xml(xml_string) # how to extract the proforma functionality into a different module in rails? xml = Nokogiri::XML(xml_string) - self.title = xml.xpath('/root/p:task/p:meta-data/p:title/text()')[0].content - self.description = xml.xpath('/root/p:task/p:description/text()')[0].content, + xml.collect_namespaces + self.attributes = { + title: xml.xpath('/root/p:task/p:meta-data/p:title/text()')[0].content, + description: xml.xpath('/root/p:task/p:description/text()')[0].content + } self.execution_environment_id = 1 end