Я решил похожую проблему с авторизацией. Я создал простой контроллер авторизации с этим действием:
def unauthorizedxhr
render :update do |page|
page.replace_html("notice", :partial=>"unauthorizedxhr")
page.show("notice")
end
end
Вот шаблон:
<% if flash[:notice] -%>
<div id="noticexhr"><%= flash[:notice] %></div>
<% end -%>
Когда авторизация не удалась в контроллере, я бы перенаправил на: controller => "authorization",: action => "unauthorizedxhr" после установки значения flash [: note]. Это позволило мне настроить сообщение, которое я отправил пользователю, и обработало отображение сообщения с помощью рендера: код обновления выше.
Вы можете адаптировать это к вашей проблеме, создав контроллер ошибок, перехватывая любые возникшие ошибки в других ваших контроллерах, а затем просто перенаправляя на: controller => "errors",: action => "displayxhr", когда вызов не удается. Таким образом, вы стандартизировали свой механизм сообщения об ошибках, но позволили себе настраивать сообщения об ошибках при каждом действии.
Вы все еще можете использовать идею cpm выше, но отображение ошибки будет обрабатываться отдельной и отличной логикой контроллера. это должно облегчить обслуживание.
Надеюсь, это поможет.
-Крис