Hanamiでflashメッセージを表示する方法です
バージョン
- Ruby 2.4.2
- Hanami 1.1.0
事前準備
hanamiでは、デフォルトでセッションが無効になっているため、セッションを有効にする必要があります。
apps/web/application.rb
を編集し、セッションを有効にします。
apps/web/application.rb
- # sessions :cookie, secret: ENV['WEB_SESSIONS_SECRET']
+ sessions :cookie, secret: ENV['WEB_SESSIONS_SECRET']
使い方
コントローラーでメッセージを定義
flash[キー] = 値
で値を設定できます。(キーの名前は任意です。)
flash[:success] = '成功しました。'
ビューで表示
<%= flash[:success] %>
実装例
<% %i[success danger notice].each do |key| %>
<p class="#{key}"><%= flash[key] %></p>
<% end %>
Railsと違うところ
Railsでは
flash
、flash.now
、flash.keep
等使えますが、hanamiでは、flash.now
やflash.keep
のような機能はありません。ビューで表示する際、Railsだと、よく
flash.each do |key, value|
~みたいな書き方をしますが、hanamiではできません。(each
ができません)