Ajax リクエストで Rail のフラッシュをどのように処理しますか? 質問する

Ajax リクエストで Rail のフラッシュをどのように処理しますか? 質問する

私はとても満足していますソリューション私が思いついた方法です。基本的に、フラッシュをインラインでリロードするヘルパー メソッドがあり、リクエストが 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 を試してください。

おすすめ記事