diff --git a/app/assets/javascripts/experiments/dropdown_actions.js b/app/assets/javascripts/experiments/dropdown_actions.js index efa7ae741..ba69012ff 100644 --- a/app/assets/javascripts/experiments/dropdown_actions.js +++ b/app/assets/javascripts/experiments/dropdown_actions.js @@ -16,7 +16,7 @@ keyboard: false, }); validateMoveModal(id); - validateExperimentForm(); + validateExperimentForm($(id)); }) .on("ajax:error", function() { animateSpinner(null, false); @@ -63,37 +63,41 @@ form.find("#experiment_project_id"), msg.message.toString()); }) - .clearFormErrors(); + on('submit', function(){ + form.clearFormErrors(); + }); } // Setup front-end validations for experiment form - function validateExperimentForm(){ - var form = $("#new-experiment-modal").find("form"); - form - .on('ajax:success' , function(){ - animateSpinner(form, true); - location.reload(); - }) - .on('ajax:error', function(e, error){ - var msg = JSON.parse(error.responseText); - if ( 'name' in msg ) { - renderFormError(e, - $('#new-experiment-name'), - msg.name.toString()); - } else if ( 'description' in msg ) { - renderFormError(e, - $('#new-experiment-description'), - msg.description.toString()); - } else { - renderFormError(e, - $('#new-experiment-name'), - error.statusText); - } - }) - .on('submit', function(ev) { - textValidator(ev, $('#new-experiment-name'), false); - textValidator(ev, $('#new-experiment-description'), true); - }) - .clearFormErrors(); + function validateExperimentForm(element){ + if ( element ) { + var form = element.find("form"); + form + .on('ajax:success' , function(){ + animateSpinner(form, true); + location.reload(); + }) + .on('ajax:error', function(e, error){ + var msg = JSON.parse(error.responseText); + if ( 'name' in msg ) { + renderFormError(e, + element.find("#experiment-name"), + msg.name.toString()); + } else if ( 'description' in msg ) { + renderFormError(e, + element.find("#experiment-description"), + msg.description.toString()); + } else { + renderFormError(e, + element.find("#experiment-name"), + error.statusText); + } + }) + .on('submit', function(ev) { + textValidator(ev, element.find("#experiment-name"), false); + textValidator(ev, element.find("#experiment-description"), true); + }) + .clearFormErrors(); + } } // Initialize no description edit link function initEditNoDescription(){ diff --git a/app/controllers/experiments_controller.rb b/app/controllers/experiments_controller.rb index 16a70aef9..ed5b37785 100644 --- a/app/controllers/experiments_controller.rb +++ b/app/controllers/experiments_controller.rb @@ -76,10 +76,17 @@ class ExperimentsController < ApplicationController @experiment.touch(:workflowimg_updated_at) flash[:success] = t('experiments.update.success_flash', experiment: @experiment.name) - redirect_to canvas_experiment_path(@experiment) + respond_to do |format| + format.json do + render json: {}, status: :ok + end + end else - flash[:alert] = t('experiments.update.error_flash') - redirect_to :back + respond_to do |format| + format.json do + render json: @experiment.errors, status: :unprocessable_entity + end + end end end diff --git a/app/views/experiments/_edit_modal.html.erb b/app/views/experiments/_edit_modal.html.erb index b3a362e29..b2a1c3e85 100644 --- a/app/views/experiments/_edit_modal.html.erb +++ b/app/views/experiments/_edit_modal.html.erb @@ -4,7 +4,7 @@ tabindex="-1" role="dialog" aria-labelledby="edit-experiment-modal-label"> - <%= bootstrap_form_for [@project, @experiment] do |f| %> + <%= bootstrap_form_for [@project, @experiment], remote: true do |f| %>