承認に関する同様の問題を解決しました。このアクションで単純な承認コントローラーを作成しました。
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 -%>
コントローラーで承認が失敗した場合、flash[:notice] 値を設定した後、:controller=>"authorization", :action=>"unauthorizedxhr" にリダイレクトします。これにより、ユーザーに送信したメッセージをカスタマイズでき、上記の render :update コードを通じてメッセージの表示を処理できました。
エラーコントローラーを作成し、他のコントローラーで発生したエラーをキャッチし、呼び出しが失敗したときに単に :controller=>"errors", :action=>"displayxhr" にリダイレクトすることで、これを問題に適応させることができます。そうすれば、エラー通信メカニズムを標準化できますが、アクションごとにエラー メッセージをカスタマイズできるようになります。
上記の cpm のアイデアを引き続き使用できますが、エラーの表示は別個の別個のコントローラー ロジックによって処理されます。これにより、メンテナンスが少し簡単になるはずです。
それが役立つことを願っています。-クリス