Toasts 通知未在 rails 上显示

Toasts notifications not displaying on rails

我想在 login/logout 上添加吐司消息,但我没有收到吐司。 谢谢你的建议!

gemfile

gem 'devise'
gem 'toastr-rails'

app\javascript\packs\application.js

require("@rails/ujs").start()
require("turbolinks").start()
require("@rails/activestorage").start()
require("channels")
toastr = require("toastr")
import "bootstrap"
import "../stylesheets/custom.css"

app\assets\stylesheets\application.css

 *= require bootstrap
 *= require_tree
 *= require toastr
 *= require_self

app\assets\stylesheets\custom.css.scss

@import 'bootstrap/dist/css/bootstrap';
@import 'toastr';

app\views\shared_message.html.erb

<% unless flash.empty? %>
<script type="text/javascript">

    <% flash.each do |key, value| %>
      <% type = key.to_s.gsub('alert','error').gsub('notice', 'success') %>
        toastr['<%= type %>'] ('<%= value %>')
        <% end %>
</script>
      <% end %>

app\views\layouts\application.html.erb

<%= render 'shared/message' %>

在您的 shared_message.html.erb 中,您已经将 alert 替换为 error,将 notice 替换为 success。所以你这样做是对的。但是你应该在共享文件夹中命名你的文件_message.html.erb

在 application.js 中你还应该 //= require toastr 然后,确保你在终端的项目文件夹中并且 运行 bundle install

确保在你的 gem 文件中至少指明 1 个。像这样

gem 'toastr-rails', '~> 1.0'

查看您在 devise/sessions/new.html.erbdevise/registrations/new.html.erbedit.html.erb 中的视图,并确保您仍然在这里

<%= render "devise/shared/error_messages", resource: resource %> 

对于您视图中的上述错误消息,您将需要添加额外的工作以使其与 toastr 一起显示。

转到 application.html.erb 并确保在收益之上添加部分共享消息,如下所示:

并确保替换它 - 请注意您是如何命名文件的?

<%= render 'shared/message' %>
<%= yield %>

有了这个 - 请注意您必须如何声明正确的文件名?

<%= render 'shared/shared_message' %>
<%= yield %>

在你的问题上面,你在共享文件夹中命名并创建了你的文件 shared_message.html.erb 这是错误的。

所以请更好地命名它_message.html.erb它是一个部分文件,你需要把它放在乐谱下。同样为了简单起见,只需将其命名为 _message.html.erb