RailsでのNotificationと言えば、torstrが定番ですが、Rails6では、うまく動かなかったので、Notyを使ってみました。
yarnで導入できるし、書き方もtorstrと似ているので、簡単です。
インストール
$ yarn add noty
###各記述
app/javascript/packs/application.js
window.Noty = require('noty');
app/assets/styleseets/application.css
@import "noty/lib/noty";
@import "noty/lib/themes/sunset";
###パーシャル
_notification.html.erb
<% unless flash.empty? %>
<script>
<% flash.each do |key, value| %>
<% type = key.to_s.gsub('alert', 'error').gsub('notice', 'success') %>
new Noty({
type: '<%= type %>',
layout: 'topRight',
timeout: 3000,
theme: 'sunset',
text: '<%= value %>'
}).show();
<% end %>
</script>
<% end %>
_error_messsags.html.erb
<% if resource.errors.any? %>
<script>
<% resource.errors.full_messages.each do |message| %>
new Noty({
type: 'error',
layout: 'topRight',
timeout: 3000,
theme: 'sunset',
text: '<%= message %>'
}).show();
<% end %>
</script>
<% end %>
あとは、表示させたいviewに読み込ませるだけ。