Rails: Ajaxでflashメッセージを一度だけ表示する方法

小川です。

Railsのflashメッセージをajaxで出すと、他のページに遷移しても、更新されたflashが表示され続けるという状況に遭遇しました。
1度だけ出てくれればいいんですけど。。。

下記がajaxで表示する部分です。下記のファイルパスが(front_ajax_path)

<%= flash[:notice] %>
  • flashを表示させたいビュー
<div id="notice_or_alert_for_ajax_area"></div>
  • 実行しているajax
$(‘#notice_or_alert_for_ajax_area’).load(“<%= front_ajax_path %>”);

解決策

application_controllerに以下を記述して明示的にアクション実行後にflash消すようにしました。
if request.xhrでajaxからのリクエストかどうか判定しています。

after_filter :discard_flash_if_xhr
protected
def discard_flash_if_xhr
  flash.discard if request.xhr?
end
Ruby on RailsによるWEBシステム開発、Android/iPhoneアプリ開発、電子書籍配信のことならお任せください この記事を書いた人と働こう! Ruby on Rails の開発なら実績豊富なBPS

週刊Railsウォッチ

インフラ

BigBinary記事より

ActiveSupport探訪シリーズ