https://www.aeolusproject.org/redmine/issues/3239
Adds _detail.xml.haml template for displaying Provider via XML
Adds respond_to block to handle_active_record_not_found error handler
---
src/app/controllers/application_controller.rb | 9 +++++++--
src/app/controllers/providers_controller.rb | 1 +
src/app/views/api/error.xml.haml | 2 +-
src/app/views/providers/_detail.xml.haml | 6 ++++++
4 files changed, 15 insertions(+), 3 deletions(-)
create mode 100644 src/app/views/providers/_detail.xml.haml
diff --git a/src/app/controllers/application_controller.rb
b/src/app/controllers/application_controller.rb
index a1bd60f..147cd38 100644
--- a/src/app/controllers/application_controller.rb
+++ b/src/app/controllers/application_controller.rb
@@ -106,8 +106,13 @@ class ApplicationController < ActionController::Base
end
def handle_active_record_not_found_error(error)
- redirect_to :controller => params[:controller]
- flash[:notice] = t('application_controller.flash.notice.record_not_exist')
+ respond_to do |format|
+ format.html do
+ redirect_to :controller => params[:controller]
+ flash[:notice] =
t('application_controller.flash.notice.record_not_exist')
+ end
+ format.xml { render :template => 'api/error', :locals => {:error
=> error}, :status => :not_found }
+ end
end
def handle_api_error(error)
diff --git a/src/app/controllers/providers_controller.rb
b/src/app/controllers/providers_controller.rb
index 41cf5d5..7b159bd 100644
--- a/src/app/controllers/providers_controller.rb
+++ b/src/app/controllers/providers_controller.rb
@@ -93,6 +93,7 @@ class ProvidersController < ApplicationController
end
render :partial => @details_tab and return
end
+ format.xml { render :partial => 'detail', :locals => { :provider
=> @provider } }
end
end
diff --git a/src/app/views/api/error.xml.haml b/src/app/views/api/error.xml.haml
index 15d9efd..edae2b1 100644
--- a/src/app/views/api/error.xml.haml
+++ b/src/app/views/api/error.xml.haml
@@ -1,4 +1,4 @@
!!!XML
%error
%code=error.class.name.demodulize
- %message=error.message
\ No newline at end of file
+ %message=error.message
diff --git a/src/app/views/providers/_detail.xml.haml
b/src/app/views/providers/_detail.xml.haml
new file mode 100644
index 0000000..d70c6f1
--- /dev/null
+++ b/src/app/views/providers/_detail.xml.haml
@@ -0,0 +1,6 @@
+!!! XML
+%provider{:id => provider.id, :href => api_provider_url(provider)}
+ %name= provider.name
+ %url= provider.url
+ %provider_type= provider.provider_type.deltacloud_driver
+ %deltacloud_provider= provider.deltacloud_provider
--
1.7.7.6