私はとても満足していますソリューション私が思いついた方法です。基本的に、フラッシュをインラインでリロードするヘルパー メソッドがあり、リクエストが xhr の場合はフラッシュをクリアする after_filter があります。これよりも簡単な解決策をお持ちの方はいらっしゃいますか?
アップデート:上記のソリューションは Rails 1.x で書き直されたもので、現在はサポートされていません。
ベストアンサー1
after_filter ブロックを使用して応答ヘッダーにフラッシュ メッセージを保存し、JavaScript を使用して表示することもできます。
class ApplicationController < ActionController::Base
after_filter :flash_to_headers
def flash_to_headers
return unless request.xhr?
response.headers['X-Message'] = flash[:error] unless flash[:error].blank?
# repeat for other flash types...
flash.discard # don't want the flash to appear when you reload page
end
そして、application.js にグローバル ajax ハンドラーを追加します。jquery の場合は次のようにします。
$(document).ajaxError(function(event, request) {
var msg = request.getResponseHeader('X-Message');
if (msg) alert(msg);
});
alert() を独自の JavaScript フラッシュ関数に置き換えるか、jGrowl を試してください。