Rozwiązałem podobny problem z autoryzacją. I stworzył prosty kontroler autoryzacji z tej akcji:
def unauthorizedxhr
render :update do |page|
page.replace_html("notice", :partial=>"unauthorizedxhr")
page.show("notice")
end
end
oto szablon:
<% if flash[:notice] -%>
<div id="noticexhr"><%= flash[:notice] %></div>
<% end -%>
Kiedy autoryzacja nie powiodła się w sterowniku, chciałbym skierować do: kontroler => „zezwolenie”, : action => "unauthorizedxhr" po ustawieniu wartości flash [: notice]. Pozwoliło mi to dostosować wiadomość, którą wysłałem do użytkownika, i obsłużyło wyświetlanie wiadomości poprzez render: kod aktualizacji powyżej.
Możesz dostosować to do swojego problemu, tworząc kontroler błędów, wychwytując wszelkie błędy w innych kontrolerach, a następnie po prostu przekierowujesz do: controller => "errors",: action => "displayxhr", gdy połączenie nie powiedzie się. W ten sposób ustandaryzujesz swój mechanizm komunikacji błędów, ale pozwolisz sobie na dostosowanie komunikatów o błędach przy każdym działaniu.
Nadal można korzystać z pomysłu cpm powyżej, ale wyświetlacz błędu będzie obsługiwany przez oddzielną i odrębną logikę sterownika. to powinno trochę ułatwić utrzymanie.
Nadzieję, że pomaga. -Chris