diff --git a/backend/app/controllers/spree/admin/resource_controller.rb b/backend/app/controllers/spree/admin/resource_controller.rb index 35c4313299b..b9a4ba34753 100644 --- a/backend/app/controllers/spree/admin/resource_controller.rb +++ b/backend/app/controllers/spree/admin/resource_controller.rb @@ -99,16 +99,27 @@ def destroy if destroy_result invoke_callbacks(:destroy, :after) - flash[:success] = flash_message_for(@object, :successfully_removed) respond_with(@object) do |format| - format.html { redirect_to location_after_destroy } - format.js { render partial: "spree/admin/shared/destroy" } + message = flash_message_for(@object, :successfully_removed) + format.html do + flash[:success] = message + redirect_to location_after_destroy + end + format.js do + render plain: message + end end else invoke_callbacks(:destroy, :fails) respond_with(@object) do |format| - format.html { redirect_to location_after_destroy } - format.js { render status: :unprocessable_entity, plain: @object.errors.full_messages.to_sentence } + message = @object.errors.full_messages.to_sentence + format.html do + flash[:error] = message + redirect_to location_after_destroy + end + format.js do + render status: :unprocessable_entity, plain: message + end end end end diff --git a/backend/spec/controllers/spree/admin/resource_controller_spec.rb b/backend/spec/controllers/spree/admin/resource_controller_spec.rb index 0c0273b5487..2dc6b4f186d 100644 --- a/backend/spec/controllers/spree/admin/resource_controller_spec.rb +++ b/backend/spec/controllers/spree/admin/resource_controller_spec.rb @@ -168,6 +168,16 @@ def check_destroy_constraints expect(response.body).to eq assigns(:widget).errors.full_messages.to_sentence end end + + context 'html format' do + subject { delete :destroy, params: params } + + it 'responds with error message' do + subject + expect(response).to be_redirect + expect(flash[:error]).to eq assigns(:widget).errors.full_messages.to_sentence + end + end end end