2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

Bootstrap4でflashメッセージに閉じるアイコンボタン(Dismissing)を実装する

Last updated at Posted at 2020-10-24

#前提条件
すでにbootstrap4を導入していてる人。
####bootstrap3でもできますが少し記述が変わるので以下参考
https://bootstrap-guide.com/components/alerts
###やりたい事
flashメッセージの横に✖️を出してメッセージを消せるようにしたい
(参考画像)http://drive.google.com/uc?export=view&id=1ckdEvoEdn79roPkAsarFpTbnf-pq_Ejl
#実装
以下のコードを部分テンプレートファイルに記載

layout/_flashes.html.erb
<% flash.each do |key, value| %>
  <div class="alert alert-<%= bootstrap_alert(key) %> alert-dismissible fade show" role="alert">
  <button type="button" class="close" data-dismiss="alert" aria-label="閉じる">
    <span aria-hidden="true">&times;</span>
  </button>
    <strong>
      <%= value %>
    </strong>
  </div>
<% end %>

#コードの説明
<% flash.each do |key, value| %>はコントローラなどでflashメッセージを記載したときにeachで毎回出るように回しています。
<span aria-hidden="true">&times;</span>&times;は✖️のエスケープ文字です。正直これは直接✖️と書いても良いらしい。
エスケープ処理について理解したい方は下記のURLを参考に
https://qiita.com/n_hirai/items/df0a21d2409ee47973e5
##追記2020 11/9
違うアプリで導入するとbootstrap_alertにエラーが出たので<%= key %> だけにして,

application_controller.rb
add_flash_types :success, :info, :warning, :danger

application_controller.rbに上記を記載して、コントローラでこのようにするとうまく行きました。

 redirect_to @event, flash: {success: "イベントが追加されました"}

#最後に

さすがbootstrap と言ったところでしょうか。少しの記述で簡単に実装できます。
エスケープ処理についても少し理解できたので良かったです。

2
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?