私は同様の問題を認可で解決しました。私はこのアクションで簡単な認証コントローラを作成:
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 -%>
承認がコントローラに障害が発生したとき、私はにリダイレクトしたい:コントローラ=>「承認」、 :action => "unauthorizedxhr"にフラッシュ[:notice]値を設定してください。これにより、ユーザーに送信したメッセージをカスタマイズすることができ、上記のrender:updateコードを使ってメッセージの表示を処理しました。
エラーコントローラーを作成し、他のコントローラーで発生したエラーをキャッチして、単にコントローラー=> "エラー"、アクション=> "displayxhr"にリダイレクトすることで、これを問題に適応させることができます。そうすれば、エラー通信メカニズムを標準化することができますが、各アクションごとにエラーメッセージをカスタマイズすることができます。
上記のcpmの考え方は引き続き使用できますが、エラーの表示は別個のコントローラロジックで処理されます。それは維持するのが少し容易になるはずです。
希望に役立ちます。
def rescue_action_in_public(exception)
response_code = response_code_for_rescue(exception)
status = interpret_status(response_code)
respond_to do |format|
format.html { render_optional_error_file response_code}
format.js { render :update, :status => status do |page| page.redirect_to(:url => error_page_url(status)) end}
end
end
この基本的に転送し、正しい静的なHTMLページへのリクエストがAJAXまたは通常のGET/POSTによるものであればどんなに: -Chris