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.erb
和 devise/registrations/new.html.erb
和 edit.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
我想在 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.erb
和 devise/registrations/new.html.erb
和 edit.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