【解決】undefined method 'flash' for#<ActionDispatch::Request>

f:id:nkeke0:20210331103144p:plain

はじめに

Vue.js + RailsAPIモードで開発中に突如として現れたエラーです。

 

 
 undefined method 'flash' for#<ActionDispatch::Request>
 

 

原因、解決方法を記載します。

 

RailsAPIモードにする方法はこちら 

 

解決方法

flashメソッドが未定義だと言われているのでapplication.rbに定義してあげます。

 

 config/application.rb
 
 $ config.middleware.use ActionDispatch::Flash
 

 

原因 

Rais 5から実装されたAPIモードには以下のような特徴があります。

 

・不要なGemgemfileから省いている

・不要なRack middlewareを省いている

Generatorviewhelperを生成しない

 

2つ目の特徴にある、”不要なRack middlewareを省いている”ところが今回のエラー原因につながります。

 

省いているRack middlewareの中に、ActionDispatch::Flashがあるので、Flashが未定義となり、undefined method 'flash' for#<ActionDispatch::Request>のエラーが発生していました。

参考

Rails5 + APIモードで後からdeviseを使おうとした時のエラー対応 - Qiita

Rails ユーザー必見!Rais 5の注目新機能と変更点まとめ | Wantedly Engineer Blog