小川です。
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