I have a partial which is being rendered in a view in controller A. This partial has a form which calls ‘update’ action in controller B. If update fails I have the render back the original view again with the proper errors. I used,
render :action => :show
This show action is actually is that of controller B but the call being ajax it is not loaded and the original view continues to be displayed but the errors are not being shown.
The problem is I am not able to detect the errors being received if any.
Need suggestions urgently
Let me see if I understand.
1) A is a controller that renders an standard HTML view of some type
(ERB, HAML, etc).
2) B is a controller that is called by the page A renders as AJAX,
returning JSON data.
If controller B fails for some reason, you need to inform your client
side application of the failure, typically this is also done be
returning JSON with an error code and message, plus any other
information needed for the client-side application to recover
gracefully (and inform the user if necessary).
Meanwhile, controller B should also be logging information about it's
state to the Rails.logger, thus giving you a place to put information
for later debugging, if necessary.
So: any controller called by AJAX should *always* return JSON, either
the expected result, or an error object.