Tech Racho エンジニアの「?」を「!」に。
  • 開発

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

CONTACT

TechRachoでは、パートナーシップをご検討いただける方からの
ご連絡をお待ちしております。ぜひお気軽にご意見・ご相談ください。